4 回答
TA贡献1840条经验 获得超5个赞
虽然这只适用于标量数组(见下面的注释),但它很简短:
array1.length === array2.length && array1.every(function(value, index) { return value === array2[index]})
Rr,在带有箭头功能的ECMAScript 6 / CoffeeScript / TypeScript中:
array1.length === array2.length && array1.every((value, index) => value === array2[index])
(注意:'标量'在这里表示可以直接使用的值===。因此:数字,字符串,引用对象,引用函数。有关比较运算符的更多信息,请参阅MDN参考)。
UPDATE
根据我从评论中读到的内容,对数组进行排序和比较可能会给出准确的结果:
array1.length === array2.length && array1.sort().every(function(value, index) { return value === array2.sort()[index]});
例如:
array1 = [2,3,1,4];
array2 = [1,2,3,4];
然后上面的代码将给出 true
TA贡献1856条经验 获得超17个赞
我喜欢将Underscore库用于数组/对象重编码项目......在Underscore和Lodash中,无论您是比较数组还是对象,它只是如下所示:
_.isEqual(array1, array2) // returns a boolean
_.isEqual(object1, object2) // returns a boolean
TA贡献1909条经验 获得超7个赞
我认为这是使用JSON stringify执行此操作的最简单方法,在某些情况下它可能是最佳解决方案:
JSON.stringify(a1) === JSON.stringify(a2);
这将对象转换a1
和a2
使他们能够比较成字符串。在大多数情况下,顺序很重要,因为它可以使用上述答案之一中显示的排序算法对对象进行排序。
请注意,您不再比较对象,而是比较对象的字符串表示形式。它可能不是你想要的。
添加回答
举报