我看了其他据说可以解决此问题的帖子,但是这种方法对我来说仍然行不通。 我在编写一个较大的程序时遇到了一个错误,但是我将错误范围缩小到了这种方法。
我将一个单元格设置为= isMatch({1,2,3},{1,2,3})以验证我的方法是否有效。该单元格计算为False,我不知道为什么或如何解决它。
在检查stackoverflow之前,我最初编写的代码与此post的答案相同。
这是我当前拥有的代码。
function isMatch(arr1,arr2){//Returns True if same Array values in same location
if(arr1.length !== arr2.length)
return false;
for(var i =0; i<arr1.length; i++) {
if(arr1[i] !== arr2[i])
return false;
}
return true;
}
答案 0 :(得分:1)
您正在比较2D阵列。 {1,2,3}
=== [[1,2,3]]
而非[1,2,3]
。
要比较n维数组,可以递归:
function isMatch(arr1, arr2) {
if (typeof arr1 !== typeof arr2)
throw new TypeError('Arrays or elements not of same type!');
if (Array.isArray(arr1))
return (
arr1.length === arr2.length && arr1.every((e, i) => isMatch(e, arr2[i]))
);
return arr1 === arr2;
}
console.info(isMatch([[1], [2]], [[1], [2]]));
console.info(isMatch([[1, 2]], [[1, 2]]));
console.info(isMatch([[1, 2]], 1));