代码确定两个javascript字符串是否是字谜的逻辑

时间:2017-03-21 16:29:12

标签: javascript anagram

我的朋友发给我这个代码,它有效,但我不明白所有这些。

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声明。

1 个答案:

答案 0 :(得分:0)

var matched = true - 这没有任何作用,因为整个代码中这个变量的值都没有改变。

“indexOf()方法返回字符串中第一次出现指定值的位置”您的朋友正在使用indexOf()来遍历string1中string2中现有字符的每个字符。在任何时候,当它找不到该字符时,它返回false并突破while循环。