JavaScript判断两个数组或对象是否相同的方法示例

作者:小括号

时间:2026-10-22

浏览:206

本文介绍了JavaScript中判断两个数组或对象是否相同的两种常见方法。对于数组,可通过排序后转为字符串进行比较;对于对象,则使用封装的递归对比函数。文章指出这两种方法仅适用于简单数据结构,对复杂结构存在局限,适合基础开发参考。

文章目录

判断数组是否相同的方法

本文详细讲解了在JavaScript中判断两个数组或对象是否相等的具体实现方式,供开发者参考使用。

JavaScript 判断两个数组是否相同

判断两个数组是否相同,通常需要先将数组进行排序,随后将其转换为字符串形式进行比对。


JSON.stringify([1,2,3].sort()) === JSON.stringify([3,2,1].sort()); //true

或者


[1,2,3].sort().toString() === [3,2,1].sort().toString(); //true

经过验证,上述方法并不适用于结构复杂的数组。

判断对象是否相同的方法

JavaScript 判断两个对象是否相同

此处引用了网络上某位开发者封装的用于对比对象是否相同的函数。


let cmp = ( x, y ) => {
// If both x and y are null or undefined and exactly the same
    if ( x === y ) {
      return true;
    }
// If they are not strictly equal, they both need to be Objects
    if ( ! ( x instanceof Object ) || ! ( y instanceof Object ) ) {
      return false;
    }
//They must have the exact same prototype chain,the closest we can do is
//test the constructor.
    if ( x.constructor !== y.constructor ) {
      return false;
    }
    for ( var p in x ) {
      //Inherited properties were tested using x.constructor === y.constructor
      if ( x.hasOwnProperty( p ) ) {
        // Allows comparing x[ p ] and y[ p ] when set to undefined
        if ( ! y.hasOwnProperty( p ) ) {
          return false;
        }
        // If they have the same strict value or identity then they are equal
        if ( x[ p ] === y[ p ] ) {
          continue;
        }
        // Numbers, Strings, Functions, Booleans must be strictly equal
        if ( typeof( x[ p ] ) !== "object" ) {
          return false;
        }
        // Objects and Arrays must be tested recursively
        if ( ! Object.equals( x[ p ], y[ p ] ) ) {
          return false;
        }
      }
    }
    for ( p in y ) {
      // allows x[ p ] to be set to undefined
      if ( y.hasOwnProperty( p ) && ! x.hasOwnProperty( p ) ) {
        return false;
      }
    }
    return true;
};

经测试,该方法同样无法支持数据结构复杂的对象。

在常规应用场景下,上述两种方法已足够应对,通常用于比较结构简单的数据。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数组操作技巧总结》、《JavaScript遍历算法与技巧总结》、《javascript面向对象入门教程》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript错误与调试技巧总结》

希望本文所述内容对大家的JavaScript程序设计有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章