比较两个 Javascript 对象中的值
Comparing values in two Javascript objects
我有两个 Javascript 对象,它们目前看起来都是这样的:
x = {"43943": "4249", "349439": "84439", "9034": "349", "90343": "30230" }
y = {"349439": "3949230", "9034": "292", "43943": "93240", "90343": "30000" }
我想知道是否可以比较与同一个键关联的值,并确定 y 中的值是否低于 x 中的值,然后打印两个值以及它们之间的差值?
有时,相同的键可能不会出现在每个数组中。
谁能提供一些建议?我不知道从哪里开始。
您可以遍历一个对象,查看它的任何键是否存在于另一个对象中,然后将结果打印到控制台:
/*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]));
}
});
您可以将所有属性合并到一个对象中,如果满足要求就可以进行计算。
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>');
我有两个 Javascript 对象,它们目前看起来都是这样的:
x = {"43943": "4249", "349439": "84439", "9034": "349", "90343": "30230" }
y = {"349439": "3949230", "9034": "292", "43943": "93240", "90343": "30000" }
我想知道是否可以比较与同一个键关联的值,并确定 y 中的值是否低于 x 中的值,然后打印两个值以及它们之间的差值?
有时,相同的键可能不会出现在每个数组中。
谁能提供一些建议?我不知道从哪里开始。
您可以遍历一个对象,查看它的任何键是否存在于另一个对象中,然后将结果打印到控制台:
/*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]));
}
});
您可以将所有属性合并到一个对象中,如果满足要求就可以进行计算。
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>');