代码如下<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后的值都相同
为什么两者却不能等价
求详细解释
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后的值都相同
为什么两者却不能等价
求详细解释
解决方案 »
- JavaScript生成表格问题
- 小菜遇到的问题
- 新人关于javascript中闭包问题
- 怎样主动销毁ActiveX控件?
- JavaScript正则表达式
- 如何用js把一个网页的<link href="css.css" rel="stylesheet" type="text/css">动态的改变Href="abc.css"呢???
- 想对一个数组重新排序.
- 这样的字符串如何分割“0.9×0.45×0.012”
- 请问如何在页面上取得一个textbox(WebForm control)的值?
- 传递地参数太长,传过去变成null,怎么办?
- 全选以后点下一页,返回以后全选状态不变
- Javascript动态生成控件的问题
你这句是将数组转换成类型了,所以能比较,返回YES
if (myData == myData0) alert("YES"); else alert("NO");
你这句是直接将数组进行比较,因为数组是Object类型,而Object类型是不能比较的,所以返回NO。
还有你的vat str = '3,466.55|5,155.52';写错了,不是vat,是var
谢谢大家的解答,明白这个原因了
即便他们内存地址不同,但他们的内容是一样的,为什么我的程序在运行调用这两个数组的函数时,会产生不一样的结果,直接赋值的myData0是正常的,而调用myData时总是报错wrong format, 难道split生成的myData不是数组么
多谢大家的热心解答
原因我用toSource()方法找到了,问题也解决了
直接赋值的myData0是一个二维数组
而split切出来的是一维数组