【发布时间】:2020-04-22 10:13:23
【问题描述】:
是否有更快或更有效的方法来检查两个数组是否在 javascript 中包含相同的值?
这是我目前正在做的检查。它有效,但很长。
var arraysAreDifferent = false;
for (var i = 0; i < array1.length; i++) {
if (!array2.includes(array1[i])) {
arraysAreDifferent = true;
}
}
for (var i = 0; i < array2.length; i++) {
if (!array1.includes(array2[i])) {
arraysAreDifferent = true;
}
}
【问题讨论】:
-
如果您需要支持旧版 IE 和/或反社会人士,您可以转换为字符串并进行比较:
console.log(JSON.stringify(['a','b','c'].sort()) === JSON.stringify(['b','c','a'].sort())); // true -
@Gavin 感谢 sociopath 评论让我发笑 :) 但是,据我了解,OP 希望
[0,1,1]和[0,1]通过测试 -
.sort的一个问题是计算复杂 -O(n log n),比O(n)更糟糕 -
@Gavin 只是一个注释——“或”不是唯一的。事实上,其中任何一个都可能导致另一个。
-
强烈建议:see georg's answer here 使用集合操作。
标签: javascript arrays compare