使用JavaScript解决此编码难题时遇到的问题

使用JavaScript解决此编码难题时遇到的问题,javascript,arrays,algorithm,scope,closures,Javascript,Arrays,Algorithm,Scope,Closures,说明如下: “编写一个函数,该函数将从列表中查找一个单词的所有字谜。您将获得两个输入:一个单词和一个包含单词的数组。您应该返回一个包含所有字谜的数组,如果没有字谜,则返回一个空数组。例如: 字谜('abba',['aabb','abcd','bbaa','dada'])=> 我捕获了一个片段,它接受第一个参数并提供了所有可能的字符组合。我现在的问题是如何将这个数组与第二个参数匹配,并返回一些结果 函数allAnagrams(字,字){ 如果(字长

说明如下:

“编写一个函数,该函数将从列表中查找一个单词的所有字谜。您将获得两个输入:一个单词和一个包含单词的数组。您应该返回一个包含所有字谜的数组,如果没有字谜,则返回一个空数组。例如:

字谜('abba',['aabb','abcd','bbaa','dada'])=>

我捕获了一个片段,它接受第一个参数并提供了所有可能的字符组合。我现在的问题是如何将这个数组与第二个参数匹配,并返回一些结果

函数allAnagrams(字,字){
如果(字长<2){
返回[字];
}否则{
var allAnswers=[];
for(变量i=0;iallAnagrams(“abc”、“acb”、“cba”、“bac”、“bca”)您基本上需要查看数组中是否出现任何第一个字符串

如果两个字符串是彼此的排列,比较的一种快速方法是对两个字符串进行排序并进行比较:

function stringSort(string) {
  return string.split('').sort().join('');
}

function isAnagram(first, second) {
  // are the two sorted strings equal, if so then anagram
  return stringSort(first) == stringSort(second);
}
现在,我们可以使用这些方便的函数来帮助我们构建最终所需的函数:

function allAnagrams(word, words) {
  return words.filter(function(element) {
    return isAnagram(word, element);
  });
}
请注意使用,这是一种非常方便的方法,可以在某些情况下将数组分解为几个值


注意我没有测试过这个,因此如果有任何问题,请询问。

您基本上需要查看数组中是否出现任何第一个字符串

如果两个字符串是彼此的排列,比较的一种快速方法是对两个字符串进行排序并进行比较:

function stringSort(string) {
  return string.split('').sort().join('');
}

function isAnagram(first, second) {
  // are the two sorted strings equal, if so then anagram
  return stringSort(first) == stringSort(second);
}
现在,我们可以使用这些方便的函数来帮助我们构建最终所需的函数:

function allAnagrams(word, words) {
  return words.filter(function(element) {
    return isAnagram(word, element);
  });
}
请注意使用,这是一种非常方便的方法,可以在某些情况下将数组分解为几个值


注意我没有测试过这个,所以如果有任何问题,请询问。

很好。可以通过预先计算
stringSort(word)
@Amadan来优化,我在创建这个时意识到,我使用了术语“fast”,根本没有尝试优化XD,这很酷,很好理解。如果您不介意解释参数'element'的确切来源是什么?像Amadan所说的预计算只是在allAnagrams函数中添加一个行分割/排序“单词”吗?您可以查看我在@Benediah的帖子中提供的所有链接,例如,请参阅此处,以获取有关
元素的帮助is@Benediah您还需要实现和试验我的代码,请尝试添加
console.log(元素)
例如。这很好。可以通过预先计算
stringSort(word)来优化
@Amadan我在创建此文件时意识到,我使用了术语“快速”,但根本没有尝试优化XD。这很酷,很好知道。如果你不介意解释参数“元素”的确切含义,那么像Amadan所说的预计算会不会只是在allAn中添加一个行分割/排序“单词”agrams功能?您可以查看我在@Benediah的帖子中提供的所有链接,例如,请参见此处,以获取有关
元素的帮助is@Benediah您还需要实现和试验我的代码,例如,尝试添加
console.log(element)