代码之家  ›  专栏  ›  技术社区  ›  David542

javascript中的浅数组equals

  •  -1
  • David542  · 技术社区  · 3 年前

    为了检查javascript中两个数组的相等性,可以对以下内容进行改进吗?

    "use strict"
    function main(arr1, arr2) {
        if (arr1.length !== arr2.length) {
            return false;
        }
        for (let i = 0; i < arr1.length; i++) {
            if (arr1[i] !== arr2[i]) {
                return false
            }
        }
        return true;
    }
    const tests = [
      [[1,2],[1,2]],
      [[1],[1,2]],
      [[1,2],[1]],
      [[1,2],[3,4]],
      [[],[]]
    ]
    for (const [arr1, arr2] of tests) {
      let res = main(arr1, arr2);
      console.log(arr1, arr2, res);
    }
    2 回复  |  直到 3 年前
        1
  •  1
  •   ray    3 年前

    不确定这是否是一个改进,但您可以将其缩短:

    "use strict"
    
    function main(arr1, arr2) {
        return (
          arr1.length === arr2.length
          && arr1.every((v, i) => arr2[i] === v)
        );
    }
    
    const tests = [
      [[1,2],[1,2]],
      [[1],[1,2]],
      [[1,2],[1]],
      [[1,2],[3,4]],
      [[],[]]
    ]
    for (const [arr1, arr2] of tests) {
      let res = main(arr1, arr2);
      console.log(arr1, arr2, res);
    }
        2
  •  0
  •   azhen7    3 年前

    在用于检查数组相等性的算法AFAIK方面没有进一步的改进。