小编典典

比较JavaScript中的对象数组

javascript

我想比较JavaScript代码中2个对象数组。这些对象共有8个属性,但是每个对象都不会有一个值,并且每个数组的大小永远都不能超过8个,因此可能要使用遍历每个对象然后查看对象的值的蛮力方法。
8个属性是执行我想做的最简单的方法,但是在实现之前,我想看看是否有人有一个更优雅的解决方案。有什么想法吗?


阅读 300

收藏
2020-05-01

共1个答案

小编典典

编辑:您不能在JavaScript解释器的当前基于浏览器的常见实现中重载运算符。

要回答最初的问题,您可以采取一种方式来解决这个问题,请注意,这有点麻烦,只需将两个数组序列化为JSON,然后比较两个JSON字符串即可。这只会告诉您数组是否不同,显然您也可以对数组中的 每个
对象执行此操作,以查看哪些对象不同。

另一个选择是使用一个具有一些比较对象的工具的库-我使用并推荐 MochiKit


这是一个幼稚的实现,可能对您而言就足够了-请注意此实现存在潜在的问题:

function objectsAreSame(x, y) {
   var objectsAreSame = true;
   for(var propertyName in x) {
      if(x[propertyName] !== y[propertyName]) {
         objectsAreSame = false;
         break;
      }
   }
   return objectsAreSame;
}

假定两个对象都具有相同的确切属性列表。

2020-05-01