繁体   English   中英

如何比较两个数组对象,但任何一个数组对象都没有键对

[英]How to compare two array object but any one of the array object does not having key pair

如果两个对象中的任何一个没有密钥对,则比较两个对象。

    var itemA= [{"name": "saran", "address":"chennai"},
                       {"name": "elango", "address":"chennai"},
                       {"name": "kala", "address": "chennai"}];

    var itemB= [{"name": "saran", "address":"chennai"},
                       {"name": "elango", "address":"chennai"}]; 

我编写了以下代码来比较两个对象,

  function compareJSON(itemA, itemB) {        
      for(var prop in itemA) {
          if(itemB.hasOwnProperty(prop)) {
              switch(typeof(itemA[prop])) {
                 case "object":
                    compareJSON(itemA[prop], itemB[prop]);
                       break;
                         default:
                             if(itemA[prop] !== itemB[prop]) {
                             }
                         break;
                }
          }
     }

}

在这里我有两个对象,我需要比较两个对象。 我曾经使用for循环比较具有hasOwnProperty()方法的两个对象。 该道具具有itemA对象,如果与之不同,我将使用itemB对象进行检查。

这里的问题是无法比较itemA第三个值,因为在itemB中没有第三个元素,因此无法比较。

看一下这个。

如果不相等,则可以编写自定义修改/逻辑。

 var itemA= [{"name": "saran", "address":"chennai"}, {"name": "elango", "address":"chennai"}, {"name": "kala", "address": "chennai"}]; var itemB= [{"name": "saran", "address":"chennai"}, {"name": "elango", "address":"chennai"}]; let keysA = Object.keys(itemA); let keysB = Object.keys(itemB); if(keysA.length === keysB.length) { let flag = true; keysA.map( a => { if(!keysB.includes(a)) { flag = false; } }) flag ? alert('Equal') : alert('Not equal'); } else { alert('Not equal'); } 

可以组合使用Array.prototype.reduce()JSON.stringify()Array.prototype.includes()来查找Arrays AB之间的差异。

 // A. const A = [ {name: "saran", address:"chennai"}, {name: "elango", address:"chennai"}, {name: "kala", address: "chennai"} ] // B. const B = [ {name: "saran", address:"chennai"}, {name: "elango", address:"chennai"} ] // Differences. const differences = A.reduce((differences, object) => (!JSON.stringify(B).includes(JSON.stringify(object)) && [...differences, object] || differences), []) // Log. console.log(differences) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM