关于JS字符串比较

From:http://bbs.51js.com/thread-77786-1-1.html

Aiming 发表于 2008-4-28 15:13

JSW 发送 2008-4-28 14:58:
在不,有个javascript的问题不明白,可以问你不?
var str1=new String("");
var str2=new String("");
alert(str1==str2);
这两个结果为什么不一样呢

JSW 发送 2008-4-28 14:58:
我总觉得该是一样的

Aimingoo 说:
好象我在书里是讲过这个的吧。

JSW 说:
嗯,有的,但是没怎么明白==,和===的区别,我的理解,上面这样应该true的,但是还是false

Aimingoo 说:
是在P45页(就是《JavaScript语言精髓与编程实践》啦)。

Aimingoo 说:
我的意思是说,引用类型作比较的时候,并不会逐字符的进行check,而是检查它们的引用地址。也就是说,只要不是“同一个对象”的不同引用,就不会等值,也不会全等

Aimingoo 说:
显然,你的代码中用new String()两次,生成了两个引用 。所以……

JSW 说:
有没有一个==和===执行出来结果不一样的情况呢?我发觉好像都是一致的

Aimingoo 说:
把其中任意一个转换成值类型就可以了

Aimingoo 说:
例如:
alert(str1.valueOf() == str2);

Aimingoo 说:
或者:
alert(str1+'' == str2)

JSW 说:
呵呵,明白了,谢谢哈
不好意思打扰您工作了

Aimingoo 说:
我把这个贴到51js里去吧。挺有趣的一个问题。

----------------------------------------------------------------------
编程浪子 发表于 2008-4-29 09:53

同理

1
2
3
4
5
6
<script type= "text/javascript" >
var arr1=[ 1 , 2 , 3 , 4 ];
var arr2=[ 1 , 2 , 3 , 4 ];
alert (arr1==arr2);
alert (arr1. toString ()==arr2);
</script>


----------------------------------------------------------------------
Aiming 发表于 2008-4-29 10:22
哈哈,楼上的意思是说如何比较两个数组是否相等。当然,这是个好点子。不过更完整的做法是这样:

1
2
3
var arr1=[ 2 , 1 , 4 , 3 ];
var arr2=[ 1 , 3 , 2 , 4 ];
alert ( arr1.length==arr2.length && (arr1. sort (), arr2. sort (), arr1. toString () == arr2) );

前提条件是这两个数组只包含值类型 的数据,对引用类型的数据做上述的处理可能结果会不可预期。



http://www.cnlei.com/blog/article.asp?id=508
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值