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

谷雨
  • 3
新手上路,请多包涵

假如有两个嵌套的数组

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

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

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

回复
阅读 1.6k
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);
宣传栏