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

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

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()排序再比较)

相关文章
|
2月前
|
JavaScript 前端开发 索引
如何判断一个值是否在数组内?
如何判断一个值是否在数组内?
|
8月前
数组相关方法?
数组相关方法?
|
2月前
|
JavaScript 前端开发 索引
往数组添加对象的方法
往数组添加对象的方法
16 0
|
11月前
判断变量是否为数组的几种方法
判断变量是否为数组的几种方法
110 0
|
11月前
|
前端开发 数据格式
关于三个数组的判断
关于三个数组的判断
36 0
|
11月前
|
前端开发
判断数组对象中是否满足某条件
判断数组对象中是否满足某条件
25 0
|
8月前
|
存储 索引
数组和对象有什么区别?
数组和对象有什么区别?
50 0
|
8月前
|
存储 JavaScript 前端开发
什么是数组,什么是对象,他们的区别是什么
什么是数组,什么是对象,他们的区别是什么
37 0
v-for遍历对象、数组
v-for遍历对象、数组
105 0