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

Logic behind code determining if two javascript strings are anagrams

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

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;的目的,然后我知道为什么ifbreak 结尾的语句在那里,但我不太理解最后一个 if/else 语句。

var matched = true - 这什么都不做,因为这个变量的值在整个代码中都没有改变。

"The indexOf() method returns the position of the first occurrence of a specified value in a string" 您的朋友正在使用 indexOf() 遍历 string1 中的每个字符以查找 string2 中的现有字符。在找不到字符的任何时候,它都会 returns false 并跳出 while 循环。