JavaScript 数组比较
示例
为了进行简单的数组比较,您可以使用JSONstringify并比较输出字符串:
JSON.stringify(array1) === JSON.stringify(array2)
注意:这仅在两个对象都可以JSON序列化并且不包含循环引用的情况下起作用。可能会抛出TypeError:ConvertingcircularstructuretoJSON
您可以使用递归函数比较数组。
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; //必须相等 }
警告:使用上述函数很危险,trycatch如果您怀疑数组有循环引用(对包含自身的引用的数组的引用),则应将其包装在
a = [0] ; a[1] = a; b = [0, a]; compareArrays(a, b); //引发RangeError:超出最大调用堆栈大小
注意:该函数使用严格相等运算符===比较非数组项目 {a:0}==={a:0}是否为false