js如何判断两个数组是否相等

今天在实现一个需求的时候,需要去判断两个数组是否相等,看似简单的问题,实则还挺复杂。

首先我们知道数组是引用数据类型,在==或者===比较时,比较的是其地址值,所以[1,2] == [1,2]     [1,2] === [1,2] 二者输出的都是false,

那么如何比较两个数组是否相等呢

1. toString()或者join():

它们的原理都是将二者转换成字符串,针对某一些数组可以进行判断,如:[1,2,3].toString() === [1,2,3].toString()  和   [1,2,3,'hah'].toString() === [1,2,3,'hah'].toString()都可以打印出true,

但是有些数组则是无法进行判断比如:[{name:'tu'},{sex:'男'}]这类的数组则无法用这种方法比较,因为对象转换成字符串是[object Object],最终都会打印出true

2. JSON.stringify()

用这个方法可以很好的解决这个问题,JSON.stringify([{name:'tu'},{sex:'男'}]) == JSON.stringify([{name:'tu'},{sex:'男'}])   true

 JSON.stringify([{name:'tu'},{sex:'男'}]) == JSON.stringify([{name:'min'},{sex:'女'}])   false

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值