博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断对象是否相等
阅读量:6621 次
发布时间:2019-06-25

本文共 1335 字,大约阅读时间需要 4 分钟。

hot3.png

使用最简单的方法判断两对象或数组是否相等

一、两对象是否相等

已知两纯对象

let a = { a: 1, b: 2 };let b = { a: 1, b: 2 };

我们都知道 a == b ,返回 false ,我们要如何写一个方法,使得键值对都是一样的则认为两个对象是相等的?

方法如下:

let equalObject = (o1, o2) => {	//判断两变量类型是否一致 如果没有这个判断 [1, 2], { '0': 1, '1': 2 } 会返回true;	if (!(Object.prototype.toString.call(o1) == Object.prototype.toString.call(o2))) {        return false;    }    if (!(o1 instanceof Object) || !(o2 instanceof Object)) {        return false;    }    if (Object.keys(o1).length !== Object.keys(o2).length) {        return false;    }    return Object.keys(o1).every(v => o1[v] === o2[v]);};

如果两对象是数组,equalObject(arr1,arr2) 方法同样适用;

二、 深度比较两对象或数组

实现一个方法,只要内容形态一致,则任务数组或对象相等,例如:

let a = { a: [1, '2'], b: 2 };let b =  { b: 2, a: [1, '2'] };

方法如下:

let equal = (o1, o2) => {    if (!(Object.prototype.toString.call(o1) == Object.prototype.toString.call(o2))) {        return false;    }    if (!(o1 instanceof Object) || !(o2 instanceof Object)) {        return false;    }    if (Object.keys(o1).length !== Object.keys(o2).length) {        return false;    }    return Object.keys(o1).every(v => {        if (o1[v] instanceof Object) {            return equal(o1[v], o2[v]);        } else {            return o1[v] === o2[v];        }    });};equal({ a: [1, '2'], b: 2 }, { b: 2, a: [1, '2'] }) //true

转载于:https://my.oschina.net/u/1778998/blog/3023346

你可能感兴趣的文章
4月20日 项目管理作业
查看>>
ssh登录
查看>>
编译安装php无法解析
查看>>
mysql主从复制及维护--单主、双主
查看>>
saltstack之top及highstate命令和highdata lowdata
查看>>
linux学习笔记第五篇
查看>>
安卓学习-Camera,音频录制与Vitamio框架
查看>>
Android快速发布项目到jcenter
查看>>
Nginx的负载均衡 - 加权轮询 (Weighted Round Robin) 下篇
查看>>
Spring自动化装配bean
查看>>
rsync 启停脚本
查看>>
Redis数据操作--散列键
查看>>
nginx--学习总结
查看>>
gradle:failed to find Build Tools revision 23.0.1
查看>>
博客类网站排名
查看>>
Linux服务之samba
查看>>
使用scrapy前的环境搭建
查看>>
Spring Boot Admin - 监控部署 - 邮件监控报警
查看>>
Python学习—数据类型、运算符、条件语句
查看>>
在MaxCompute中配置Policy策略遇到结果不一致的问题
查看>>