在JavaScript中,如果让你不用"=="去比较两个字符串,你会用什么方法去实现?
JavaScript中没有专门用来对字符串相等进行比较的函数,但提供了一个查找子串的indexOf函数,它返回String 对象内第一次出现子字符串的字符位置。现有字符串A和B,假如A在B中第一次出现的字符位置为0,且B在A中第一次出现的字符位置也为0,那么我们可以断定这两个字符串是相等的,这是区分大小写的情况,不区分大小写的话,就先将字符串都转换成大写或者是小写,再进行查找比较。
(1)、区分大小写
<script type="text/javascript">
var str1="hello";
var str2="hello";
if(str1.indexOf(str2)==0 && str2.indexOf(str1)==0)
{
alert(str1+"="+str2);
}
</script>
(2)、不区分大小写【这个是最实用的比较方法,不管是什么类型,只要内容相同即可判断,省去一大堆繁杂的测试调试】
<script type="text/javascript">
var str1="hello";
var str2="Hello";
if(str1.toUpperCase().indexOf(str2)==0 && str2.toUpperCase().indexOf(str1)==0)
{
alert(str1+"="+str2);
}
</script>
实际上我们通常用"=="来比较两个字符串,Jscript手册参考
相等运算符 (==、!=)
如果两表达式的类型不同,则试图将它们转换为字符串、数字或 Boolean 量。
NaN 与包括其本身在内的任何值都不相等。
负零等于正零。
null 与 null 和 undefined 相等。
相同的字符串、数值上相等的数字、相同的对象、相同的 Boolean 值或者(当类型不同时)能被强制转化为上述情况之一,均被认为是相等的。
其他比较均被认为是不相等的。