比较对象数组,最佳方式

zoz*_*ozo 5 javascript arrays optimization compare object

我有两个数组.在每个数组中,我都有具有大量属性但没有方法的对象.我需要看看数组1是否与数组2相等.

一种方法是创建一个函数,该函数遍历数组的每个元素,并将对象的每个属性与第二个数组中类似位置的对象进行比较.

问题是数组非常大,每个对象都有很多属性.如果可能有另一种方式,我在徘徊.以C++为例,我可以读取内存......但我不知道如何在js中这样做.

我需要获得最佳方式,因为这是经常使用的函数的一部分.

ale*_*lex 4

除非它们是相同的数组实例,否则在 JavaScript 中比较内存位置将不起作用(当你这样做时会发生什么arr1 == arr2)。

您需要显式循环。

有些人在两个数组上使用JSON.stringify()(注意pimvdb评论中解释的陷阱)并将生成的字符串与cheat进行比较,但序列化为字符串并比较声音对我来说完全昂贵。但它确实有效,所以如果没有性能问题,那就发疯吧!:)

你也可以尝试一下toSource()

我将构建自己的比较函数,该函数的比较足以满足我的“相同”想法。

  • `JSON.stringify` 似乎取决于添加属性的顺序。`JSON.stringify({a:1,b:2}) === JSON.stringify({b:2,a:1})` 会产生 `false`,所以我真的不推荐它。 (5认同)
  • @zozo JavaScript 数组实际上是具有一些特殊方法和属性的对象。它们通常不像其他语言的数组实现那样按顺序存储。 (2认同)