给定两个二维数组,我如何断言它们是否相等?
例如:
array1 = [[1,0],[2,1],[3,0]]
array2 = [[1,0],[2,1],[3,1]]
检查 array1 == array2 的有效方法是什么?
最佳答案
如果相等是指数组内容以相同的顺序具有相同的元素,那么最短(虽然不是最快)的方法将是:
JSON.stringify(array1) === JSON.stringify(array2)
这将适用于任何维度的数组。
更新:如果你需要一个非常快的算法,那么简单的迭代会更好。然而,它不是万无一失的,因此要使其真正安全可靠,您需要花费更多的开发时间。这是现代浏览器的一种可能的解决方案:
function equal(array1, array2) {
if (!Array.isArray(array1) && !Array.isArray(array2)) {
return array1 === array2;
}
if (array1.length !== array2.length) {
return false;
}
for (var i = 0, len = array1.length; i < len; i++) {
if (!equal(array1[i], array2[i])) {
return false;
}
}
return true;
}
下面的 JSPerf 速度测试显示了这个算法在短
JSON
上的优越性。方法:http://jsperf.com/2d-array-comparion .
关于javascript - 断言两个二维数组是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27102507/