尝试比较对象数组中的键

时间:2016-07-22 01:11:47

标签: javascript arrays loops object

我需要循环到这个数组并比较数组中对象的值,但我尝试了不同的方法,我可以得到它。我错过了什么或者有更好的方法吗?

var all = [{a: 1, b: 2, c: 9, d: 5}, {a: 1, t: 58, r: 19, d: 5}, {a: 1, t: 14, r: 89, d: 5}];

for (var i = 0; i < all.length; i++) {
 for (var j = 0; j < all.length; j++) {
  for(var key in i){
   for(var keyz in j){
        if(all[i][key] != all[j][keyz]){
        console.log('no same');
        }
   }
  }
 }
}

2 个答案:

答案 0 :(得分:1)

试试这个:

&#13;
&#13;
var all = [{a: 1, b: 2, c: 9, d: 5}, {a: 1, t: 58, r: 19, d: 5}, {a: 1, t: 14, r: 89, d: 5}];
    var output = [], tempObj = {};
    for (var i = 0; i < all.length; i++) {
        var object =  all[i];
        for(var key in object) {
            if(tempObj[key] && tempObj[key].value == object[key]) {
                delete output[tempObj[key].index][key];
                delete object[key];
            } else {
                tempObj[key] = {
                    value: object[key],
                    index: i
                }
            }
        }
        output[i] = object;
    }
    console.log(output)
&#13;
&#13;
&#13;

答案 1 :(得分:-1)

for (var i = 0; i < all.length; i++) {
    for(var j = 0; j < all.length; j++) { 
        for (var key in all[i]) {
            if (typeof all[j][key] !== "undefined" && all[i][key] == all[j][key] && i != j) {
                 console.log("same");
            }
        }
    }
}