通过使用Javascript设置可容忍的边距来比较hashMap值



>我做了一个函数,显示两个哈希图之间的差异

例如:这是我的 2 个哈希图

第一名 =>

1234 : "1.03 , 2.17 , 3"
1235 : "1 , 4 , 5"
1236 : "2 , 3 , 3"
1237 : "0.33 , 1.51 , 5"

第二 =>

1234 : "1.03 , 2.17 , 3"
1235 : "1.17 , 2 , 3.9"
1236 : "2 , 3 , 3"
1237 : "2 , 1 , 5"

结果 =>

1235 : "1 , 4 , 5"
1237 : "0.33 , 1.51 , 5"

(目标是将第一个与第二个进行比较,并显示第一个哈希映射的键和值不一致(。

但是现在,我想为对象值的每一"hpos , vpos , dpos"设置一个可容忍的边距"0.1"。因此,即使哈希图的值仅相差"0.1"它也不会显示在对象Difference中。我应该在函数中修改什么?顺便说一句:哈希图的值结构是这样的:

positionList = iSceneGraph.merch.vpos+","+iSceneGraph.merch.hpos+","+iSceneGraph.merch.dpos.;
facingPositions[iSceneGraph.merch.ean] = positionList;

这是我的比较功能:

compareHashMap: function(iAdaptation, iActual){
var difference = {};
Object.keys(iActual).forEach(function(k){
if(iAdaptation[k] !== iActual[k]){
difference[k] = iActual[k];
}
});
return difference;
}

根据您的评论,假设在您的函数中您有 2 个数组而不是字符串,一个用于实际数字,一个用于适应。然后在您的 for 每个函数中,您可以添加:

compareHashMap: function(iAdaptation, iActual){    
var difference = {};
Object.keys(iActual).forEach(function(k){ 
for(key in iActual[k]){
if(Math.abs(iActual[k][key] - iAdaptation[k][key]) > 0.1){ //Math.abs will return absolute value of the number (positive value in case difference is minus)
difference[k] = iActual[k];
} 
}
});
return difference;
}

这只是一个例子,y我没有尝试运行这段代码。

最新更新