2016-11-27 133 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。

注意和診斷錯誤是一項重要技能。對於這樣的微小問題,控制檯是你最好的朋友,因爲它可以讓你一次嘗試一件事。