我的朋友发给我这个代码,它有效,但我不明白所有这些。
function anagram(str1, str2){
if(str1.length !== str2.length){
return false;
}
var string1 = str1.toLowerCase();
var string2 = str2.toLowerCase();
if(string1 === string2){
return true;
}
var matched = true;
var count = 0;
while(string1.length){
if(string2.length > 1)
break;
if(string2.indexOf(string1[count]) > -1)
string2 = string2.replace(string1[count], '');
else
return false;
count++;
}
return matched;
}
我理解前两个if
语句和.toLowerCase()
分配,但我没有达到var matched = true;
的目的,然后我知道为什么if
语句以break
结尾,但我真的不明白最后的if/else
声明。
答案 0 :(得分:0)
var matched = true - 这没有任何作用,因为整个代码中这个变量的值都没有改变。
“indexOf()方法返回字符串中第一次出现指定值的位置”您的朋友正在使用indexOf()来遍历string1中string2中现有字符的每个字符。在任何时候,当它找不到该字符时,它返回false并突破while循环。