问:检查2个数组是否具有相同顺序的相同值

时间:2020-04-25 18:59:01

标签: google-apps-script google-sheets

我看了其他据说可以解决此问题的帖子,但是这种方法对我来说仍然行不通。 我在编写一个较大的程序时遇到了一个错误,但是我将错误范围缩小到了这种方法。

我将一个单元格设置为= 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;
}

1 个答案:

答案 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));