JavaScript 数组比较

示例

为了进行简单的数组比较,您可以使用JSON stringify并比较输出字符串:

JSON.stringify(array1) === JSON.stringify(array2)

注意:这仅在两个对象都可以JSON序列化并且不包含循环引用的情况下起作用。可能会抛出TypeError: Converting circular structure to JSON

您可以使用递归函数比较数组。

function compareArrays(array1, array2) { 

  var i, isA1, isA2;

  isA1 = Array.isArray(array1);

  isA2 = Array.isArray(array2);

  

  if (isA1 !== isA2) { // 一个是数组而另一个不是吗?

    return false;      // 是的,那么不能一样

  }

  if (! (isA1 && isA2)) {      // 既不是数组 

    return array1 === array2;  // 返回严格平等

  }

  if (array1.length !== array2.length) { // 如果长度不同则不能相同

    return false;

  }

  // 迭代数组并进行比较

  for (i = 0; i < array1.length; i += 1) {

    if (!compareArrays(array1[i], array2[i])) { // 项目是否递归比较

      return false;

    }           

  }

  return true; // 必须相等

}

警告:使用上述函数很危险,try catch如果您怀疑数组有循环引用(对包含自身的引用的数组的引用),则应将其包装在

a = [0] ;

a[1] = a;

b = [0, a]; 

compareArrays(a, b); // 引发RangeError:超出最大调用堆栈大小

注意:该函数使用严格相等运算符===比较非数组项目  {a: 0} === {a: 0}是否为false

以上是 JavaScript 数组比较 的全部内容, 来源链接: utcz.com/z/347069.html

回到顶部