如何判断两个对象/数组相等

简介: 如何判断两个对象/数组相等

0.明确两点


1.当两个引用指向同一个对象时,对象才是相等的;

1. var obj1 = {a:1}
2. var obj2 = obj1

2.obj1 == obj2    结果为false

1. var obj1 = {a:1}
2. var obj2 = {a:1}

1.判断两个对象相等


(1)把两个对象转译成字符串进行对比


JSON.stringify(object1) === JSON.stringify(object2);

这个方法只适用于完全相同的,即键-值顺序都完全对应的对象

(2)Object.keys()


// 列出所有的键,接着遍历数组
    function ifCompare(object1, object2) {
      var o1keys = Object.keys(object1);
      var o2keys = Object.keys(object2);
      if (o2keys.length !== o1keys.length) return false;
      for (let i = 0; i <= o1keys.length - 1; i++) {
        let key = o1keys[i];
        if (!o2keys.includes(key)) return false;
        if (object2[key] !== object1[key]) return false;
      }
      return true;
    }

(3)ES6


Object.entries(object1).toString() === Object.entries(object2).toString();

(4)lodash 的 isEqual 函数


_.isEqual(value, other)

  1. value(*): 用来比较的值。
  2. other(*): 另一个用来比较的值。
  3. (boolean): 如果 两个值完全相同,那么返回 true,否则返回 false
var object = { 'a': 1 };
var other = { 'a': 1 };
_.isEqual(object, other);
// => true
object === other;
// => false

2.判断数组是否相等


(1)lodash 的 isEqual 函数

(2)使用toString()方法

(3)借助JSON的stringify()方法

(注:如果要比较元素是否相同,但元素位置打乱的话,先用sort()排序再比较)

相关文章
|
6月前
|
JavaScript 前端开发 索引
如何判断一个值是否在数组内?
如何判断一个值是否在数组内?
|
28天前
|
前端开发 JavaScript
判断数组为空的方法有哪些?
本文介绍了多种判断数组是否为空的方法,包括使用 `length` 属性、隐式类型转换、`toString()`、`join()`、`every()`、`reduce()`、`filter()`、`some()` 方法以及循环。每种方法都有其适用场景,其中使用 `length` 属性和隐式类型转换最为常见和简单。文章首发于微信公众号“前端徐徐”。
74 2
判断数组为空的方法有哪些?
|
2月前
|
JavaScript
判断一个对象为空对象的方法
判断一个对象为空对象的方法
31 4
|
6月前
|
JavaScript 前端开发 索引
往数组添加对象的方法
往数组添加对象的方法
31 0
判断变量是否为数组的几种方法
判断变量是否为数组的几种方法
142 0
|
前端开发 数据格式
关于三个数组的判断
关于三个数组的判断
45 0
|
前端开发
判断数组对象中是否满足某条件
判断数组对象中是否满足某条件
34 0
|
12月前
|
存储 索引
数组和对象有什么区别?
数组和对象有什么区别?
78 0
|
存储 JavaScript 前端开发
什么是数组,什么是对象,他们的区别是什么
什么是数组,什么是对象,他们的区别是什么
61 0