用递归判断两个嵌套数组是否相同

新手上路,请多包涵

假如有两个嵌套的数组

a = [ [ [6], [8] ] ]

b = [ [ [6], [9] ] ]

如何判断它们是否相等呢?如果用递归该如何实现呢?

阅读 4.1k
2 个回答

顺序要考虑么?对象考虑么?不考虑的话

function compareArray(arr1, arr2) {
  if (arr1.length !== arr2.length) {
    return false;
  }
  const len = arr1.length;
  for (let i = 0; i < len; i++) {
    const a1 = arr1[i];
    const a2 = arr2[i];
    if (Array.isArray(a1) && Array.isArray(a2) {
      const isEqual = compareArray(a1, a2);
      if (!isEqual) {
        return false;
      }
      continue;
    }

    if (a1 !== a2) {
      return false;
    }
  }
  return true;
}

image.png
判断数组元素顺序和值是否相等,不包含对象。

let a = [ [ [6], [9] ] ];
let b = [ [ [6], [9] ] ];
let compareArray=(a=[],b=[])=>{
   return a.every((aItem,idx)=>{
        let bItem = b[idx];
        return Array.isArray(aItem) && Array.isArray(bItem) ? compareArray(aItem, bItem) : (aItem == bItem);
    })
}
compareArray(a,b);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题