如何在 Javascript 中比较字符串数组?

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

做这个的最好方式是什么?

Ann*_*nna 6

JSON.stringify(array1.sort()) === JSON.stringify(array2.sort())
Run Code Online (Sandbox Code Playgroud)


all*_*tom 5

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)

对于更一般的情况,您需要更复杂的平等定义,我建议浏览此问题的答案。