JS比较两个数组是否相同

在javascript中判断两个数组对象的值是否相等时是不能直接通过==或===进行判断的,这时可以通过下面的方法来判断两个数组是否一致。

  // Warn if overriding existing method
  if(Array.prototype.equals)
      console.warn("Overriding existing Array.prototype.equals. Possible causes: New API defines the method, there's a framework conflict or you've got double inclusions in your code.");
  // attach the .equals method to Array's prototype to call it on any array
  Array.prototype.equals = function (array) {
      // if the other array is a falsy value, return
      if (!array)
          return false;

      // compare lengths - can save a lot of time
      if (this.length != array.length)
          return false;

      for (var i = 0, l=this.length; i < l; i++) {
          // Check if we have nested arrays
          if (this[i] instanceof Array && array[i] instanceof Array) {
              // recurse into the nested arrays
              if (!this[i].equals(array[i]))
                  return false;
          }
          else if (this[i] != array[i]) {
              // Warning - two different object instances will never be equal: {x:20} != {x:20}
              return false;
          }
      }
      return true;
  }
  // Hide method from for-in loops
  Object.defineProperty(Array.prototype, "equals", {enumerable: false});

  // 下边是测试代码,右以控制台中查看输出结果
  let arr_a = [1, 2, [1, 2]];
  let arr_b = [1, 2, [1, 2]];
  let arr_c = [1, 2, [3, 4]];

  if (arr_a.equals(arr_b)){
    console.log('数组一样');
  }else{
    console.log('数组不一样');
  }
  console.log(arr_a.equals(arr_b)); //true
  console.log(arr_a.equals(arr_c)); //false

上面代码可检查一维数组和多维数组与参考数组是否一致;

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据