JavaScript 作为一个基于对象 (没有类的概念) 的语言, 从入门到精通到放弃一直会被对象这个问题围绕. 下面我们就来看一下如何判断对象是否相等.
判断对象相等的步骤:
1, 先判断俩者是不是对象
2, 是对象后俩者长度是否一致
3, 判断俩个对象的所有 key 值是否相等相同
4, 判断俩个对象的相应的 key 对应的值是否相同
5, 来一个递归判断里面的对象循环 1-4 步骤
判断对象是否相等的代码:
- function diff(obj1,obj2){
- var o1 = obj1 instanceof Object;
- var o2 = obj2 instanceof Object;
- // 判断是不是对象
- if (!o1 || !o2) {
- return obj1 === obj2;
- }
- //Object.keys() 返回一个由对象的自身可枚举属性 (key 值) 组成的数组,
- // 例如: 数组返回下表: let arr = ["a", "b", "c"];console.log(Object.keys(arr))->0,1,2;
- if (Object.keys(obj1).length !== Object.keys(obj2).length) {
- return false;
- }
- for (var o in obj1) {
- var t1 = obj1[o] instanceof Object;
- var t2 = obj2[o] instanceof Object;
- if (t1 && t2) {
- return diff(obj1[o], obj2[o]);
- } else if (obj1[o] !== obj2[o]) {
- return false;
- }
- }
- return true;
- }
来源: http://www.css88.com/qa/javascript/11031.html