读书人

求组,请教两个数组的所有内容相同,为何

发布时间: 2012-08-03 00:12:14 作者: rapoo

求组,请问两个数组的所有内容相同,为何不能相等
代码如下

JScript code
<script language="javascript">        var myData0 = new Array([3,466.55],[5,155.52]);                vat str = '3,466.55|5,155.52';        alert(str);        var myData = str.split('|');                alert(myData);        alert(myData0);        alert(myData.join("|"));        alert(myData0.join("|"));        if (myData.join("|") == myData0.join("|")) alert("YES"); else alert("NO");                for (i=0; i<myData.length; i++){            alert(myData[i]);            alert(myData0[i]);            if (myData[i] == myData0[i]) alert("YES"); else alert("NO");//            myData[i] = myData[i].replace('=',',');//            alert(myData[i]);        }                alert(typeof(myData));        alert(typeof(myData0));            if (typeof(myData) == typeof(myData0)) alert("YES"); else alert("NO");            if (myData == myData0) alert("YES"); else alert("NO");</script>


myData0是直接赋值的数组
myData是经过对字符串split操作后生成的数组
经过详细调试,这两个数组类型,值,以及join后的值都相同
为什么两者却不能等价
求详细解释

[解决办法]
你就是去new两个空的数组,这也不会相等的,它们是各自的内存空间。

如果你这两个数组都相等了,那我改变其中一个数组的值,另外一个也会跟着变的。。这样程序就乱了,如果想更深的再了解这个。研究浏览器的内核吧。
[解决办法]
相等判断的是内存地址,一般比较两个相同的话可以试试 equals,但是一般建议重写equals方法
[解决办法]
双胞胎的2个人,无论性别,生日,甚至基因都完全相同。那你能说他们是相等的么

只能说他们是拥有相同属性的2个个体而已,

同样返回到代码中的意思就是,
这是2个个体,但是他们拥有了相同的属性值
[解决办法]
数组是引用类型 引用类型的==是判断这两个数据的内存地址是否相同,而非他们的值相等的
[解决办法]
if (myData.toString() == myData0.toString()) alert("YES"); else alert("NO");
[解决办法]
toString() 相当于返回 对象的刻度

基本上 相同的内容 相同的刻度
[解决办法]
楼主先 了解 对象 引用类型 值类型
[解决办法]
if (typeof(myData) == typeof(myData0)) alert("YES"); else alert("NO");
你这句是将数组转换成类型了,所以能比较,返回YES
if (myData == myData0) alert("YES"); else alert("NO");
你这句是直接将数组进行比较,因为数组是Object类型,而Object类型是不能比较的,所以返回NO。
还有你的vat str = '3,466.55|5,155.52';写错了,不是vat,是var

读书人网 >JavaScript

热点推荐