JavaScript-javascript数组之间是如何进行比较的?

发布于 2017-01-19 03:25:31 字数 311 浏览 1139 评论 3

我看了一些有关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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

瑾兮 2017-07-15 14:36:49

粗浅理解:
数组之间的相等比较的不是toString的相等,
而是比较的内存地址,
所以两个数组不相等。
然后你的toString只是将数组转换为字符串,
比较的是转换后的字符值,
是基本类型的比较,
比较的只是值相等。

补充一下:
刚才看了下资料,你想要就是这个属性:arr1.constructor

夜无邪 2017-05-26 21:11:43

数组是按引用(即地址)来复制、传递和比较的,如果两个数组引用的是同一个数组,那么它们完全等同。如果它们引用的是不同的数组,它们就不完全等同,即使两个数组具有完全相同的元素。

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都是相等的。

晚风撩人 2017-03-24 07:52:37

object的的比较,就是在比较引用的对象而已。
要比较里面的内容,只有深度遍历整个对象再一一比较。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文