我有两个Javascript对象,目前看起来像这样:
x = {"43943": "4249", "349439": "84439", "9034": "349", "90343": "30230" }
y = {"349439": "3949230", "9034": "292", "43943": "93240", "90343": "30000" }
我想知道我是否可以比较与相同键相关联的值,并确定y中的值是否低于x中的值,然后打印这两个值以及它们之间的差异?
有时,相同的键可能不会出现在每个数组中。
有人可以提出任何建议吗?我不知道从哪里开始。
答案 0 :(得分:0)
您可以遍历一个对象,查看其中是否存在任何键,然后将结果打印到控制台:
/*Log Helper*/ function log(msg){ document.write(msg + '<br />'); console.log(msg); }
function difference(a, b){
return Math.abs( + (parseInt(a, 10) - parseInt(b, 10)))
}
var x = {"43943": "4249", "349439": "84439", "9034": "349", "90343": "30230" }
var y = {"349439": "3949230", "9034": "292", "43943": "93240", "90343": "30000" }
Object.keys(x).forEach(function(k){
if(y[k]){
log('key: ' + k);
log('result (x-y): ' + difference(x[k], y[k]));
}
});
答案 1 :(得分:0)
您可以组合一个对象中的所有属性,并在满足要求时执行计算。
function map(o, p) {
Object.keys(o).forEach(function (k) {
result[k] = result[k] || {};
result[k][p] = +o[k];
if (p === 'y' && result[k].y < result[k].x) {
result[k].difference = result[k].x - result[k].y;
}
});
}
var x = { "43943": "4249", "349439": "84439", "9034": "349", "90343": "30230" },
y = { "349439": "3949230", "9034": "292", "43943": "93240", "90343": "30000" },
result = {};
map(x, 'x');
map(y, 'y');
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');