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