2016-10-29 150 views
0
function anagrams(word, words) { 
     var returnArray = []; 
     var wordToTest= word.split("").sort(); 
     for(i=0; i<=words.length; i++){ 
      var wordssToTest = words[i].split(""); 
      wordssToTest.sort(); 
      if(wordssToTest==wordToTest){ 
      returnArray.push(wordssToTest); 
      } 
     } 
    return returnArray; 


    } 

您好! 我需要创建一个函数,其中输入是一个字符串(单词)和一个字符串(单词)的数组。 我的目标是返回一个新的数组,它将包含“单词”字符串中所有单词的列表,这些单词是“单词”字符串的缩写。如何分割字符串数组中的每个字符串元素?

我写的代码,但它不承认5日线的words[i].split("")功能,说这是一个未知的属性未定义 ...
任何帮助吗?

回答

1

您在for循环中使用了<=而不是<。正确的代码:

function anagrams(word, words) { 
     var returnArray = []; 
     var wordToTest= word.split("").sort(); 
     for(i=0; i<words.length; i++){ 
      var wordssToTest = words[i].split(""); 
      wordssToTest.sort(); 
      if(wordssToTest==wordToTest){ 
      returnArray.push(wordssToTest); 
      } 
     } 
    return returnArray; 


    } 
0

下面是使用Array#filter方法更简单的解决方案:

function anagrams(word, words) { 
    return words.filter(el => 
    word.split('').sort().toString() === el.split('').sort().toString() 
); 
}