比较两个Javascript对象中的值

时间:2016-04-08 15:53:36

标签: javascript object javascript-objects

我有两个Javascript对象,目前看起来像这样:

x = {"43943": "4249", "349439": "84439", "9034": "349", "90343": "30230" }
y = {"349439": "3949230", "9034": "292", "43943": "93240", "90343": "30000" }

我想知道我是否可以比较与相同键相关联的值,并确定y中的值是否低于x中的值,然后打印这两个值以及它们之间的差异?

有时,相同的键可能不会出现在每个数组中。

有人可以提出任何建议吗?我不知道从哪里开始。

2 个答案:

答案 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>');