2016-11-27 66 views
-3

以下代码不会对任何想法进行排序?Javascript阵列不会排序

function findLongestWord(str) { 
    var splitString = str.split(" "); 
    var lengths = []; 
    for(var i= 0; i< splitString.length; i++){ 
    lengths += splitString[i].length; 
    } 
    lengths.sort(function(a,b){return b-a;}); 
    return lengths; 
} 
findLongestWord("The quick brown fox jumped over the lazy dog"); 
+2

'array + = integer'可能不会做你认为它做的事。另外,你的函数试图返回一个字长数组,而不是顾名思义最长的单词。 –

+1

'lengths.push(splitString [i] .length)' –

回答

1

您需要推送长度,而不是添加到数组中。

function findLongestWord(str) { 
 
    var splitString = str.split(" "); 
 
    var lengths = []; 
 
    for (var i = 0; i < splitString.length; i++) { 
 
     lengths.push(splitString[i].length); 
 
     //  ^^^^^^     ^
 
    } 
 
    lengths.sort(function (a, b) { return b - a; }); 
 
    return lengths; 
 
} 
 
console.log(findLongestWord("The quick brown fox jumped over the lazy dog"));

0

阵列串联不起作用一样,在JavaScript中。你想:

lengths.push(splitString[i].length) 

当问问题请具体说明,例如,“不排序”不是诊断。

要明确有关错误(例如,控制台的警告有关lengths.sort不是一个函数)。

的错误信息会导致你要问:

  • 哦,为什么不呢?
  • 什么是lengths当我尝试拨打sort吗?
  • 哦,它不是一个数组。我想知道为什么不呢?

因为JavaScript。

注意和诊断错误是一项重要技能。对于这样的微小问题,控制台是你最好的朋友,因为它可以让你一次尝试一件事。