在JavaScript中比较对象的数组

我想在JavaScript代码中比较2个对象数组。 这些对象有8个总属性,但每个对象不会有每个对象的值,并且每个对象的数组永远不会超过8个项目,所以可能使用遍历每个对象的强力方法,然后查看8个属性是做我想做的最简单的方法,但在实施之前,我想看看是否有人有更优雅的解决方案。 有什么想法吗?


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

要回答原始问题,有一种方法可以做到这一点,并且介意你,这有点破解,只需将两个数组序列化为JSON,然后比较两个JSON字符串即可。 这只会告诉你,如果数组是不同的,显然你可以对数组中的每个对象执行此操作,以查看哪些对象是不同的。

另一种选择是使用一个图书馆,它有一些很好的设施来比较对象 - 我使用并推荐MochiKit


编辑:答案kamens也值得考虑,因为比较两个给定的对象的单个函数将比任何图书馆做得更小,我建议(虽然我的建议肯定会工作得很好)。

这是一个天真的实现,可能对您来说足够了 - 请注意,此实现存在潜在的问题:

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

假定两个对象具有相同的属性完全列表。

哦,可能很明显,无论好坏,我都属于唯一一个回归点阵营。 :)


我知道这是一个古老的问题,答案提供了很好的工作......但这有点短,不需要任何额外的库(即JSON):

function arraysAreEqual(ary1,ary2){
  return (ary1.join('') == ary2.join(''));
}

老实说,每个对象最多8个对象和最多8个属性,最好的办法就是遍历每个对象并直接进行比较。 它会很快,而且会很容易。

如果您打算经常使用这些类型的比较,那么我同意Jason关于JSON序列化的内容......但是除此之外,不需要用新的库或JSON序列化代码来减慢应用程序的速度。

链接地址: http://www.djcxy.com/p/25697.html

上一篇: Comparing Arrays of Objects in JavaScript

下一篇: if VARIABLE in ARRAY ruby