Abh*_*h S 8 javascript arrays compare string-comparison
我想看看两个字符串数组是否相等。
例如:
compare(["abc", "def"], ["def", "abc"])
应该返回true
并且类似地,
compare(["abc", "def"], ["def", "ghi"])
Run Code Online (Sandbox Code Playgroud)
应该返回false
。
做这个的最好方式是什么?
JSON.stringify(array1.sort()) === JSON.stringify(array2.sort())
Run Code Online (Sandbox Code Playgroud)
JavaScript 没有 Set 或 Multiset 数据结构(至少没有得到广泛浏览器支持的数据结构),而您通常会使用它来测试两组项目是否相同(无论顺序如何)。所以我建议对数组进行排序并检查它们的内容是否相等。如果您知道数组仅包含字符串,则可以使用简单的相等性检查项目:
function compare(array1, array2) {
if (array1.length != array2.length) {
return false;
}
array1 = array1.slice();
array1.sort();
array2 = array2.slice();
array2.sort();
for (var i = 0; i < array1.length; i++) {
if (array1[i] != array2[i]) {
return false;
}
}
return true;
}
console.log(compare(["abc", "def"], ["def", "abc"])); // true
console.log(compare(["abc", "def"], ["def", "ghi"])); // false
Run Code Online (Sandbox Code Playgroud)
对于更一般的情况,您需要更复杂的平等定义,我建议浏览此问题的答案。