JavaScript-javascript数组之间是如何进行比较的?
我看了一些有关javascript的书籍,上面也有说javascript对象之间的比较,是比较它们是否引用自同一个对象,在进行比较的时候,会进行相应类型的转换,数组在比较的时候到底转换成什么进行比较的?
var arr1 = [1,2,3,4,5];
var arr2 = [1,2,3,4,5];
alert(arr1);//1,2,3,4,5
alert(arr2);//1,2,3,4,5
alert(arr1 == arr2);//false
alert(arr1.toString() == arr2.toString());//true
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
粗浅理解:
数组之间的相等比较的不是toString的相等,
而是比较的内存地址,
所以两个数组不相等。
然后你的toString只是将数组转换为字符串,
比较的是转换后的字符值,
是基本类型的比较,
比较的只是值相等。
补充一下:
刚才看了下资料,你想要就是这个属性:arr1.constructor
数组是按引用(即地址)来复制、传递和比较的,如果两个数组引用的是同一个数组,那么它们完全等同。如果它们引用的是不同的数组,它们就不完全等同,即使两个数组具有完全相同的元素。
var arr_a = [1,2,3];
var arr_b = [1,2,3];
arr_a==arr_b 或 arr_a===arr_b都是不等的。
var arr_c = [1,2,3];
var arr_d = arr_c;
arr_c==arr_d 或 arr_c===arr_d都是相等的。
object的的比较,就是在比较引用的对象而已。
要比较里面的内容,只有深度遍历整个对象再一一比较。