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