2013-04-27 135 views
9
var sorted = words.map(function(value) { 
    return value.toLowerCase(); 
}).sort(); 

此代碼返回從字陣列中的所有值小寫和它們進行排序返回所有值從陣列中的小寫,但我想要做一個for循環一樣,但我不能。使用for循環,而不是地圖

我想:

for (var i = 0; i < words.length; i++) { 
    sorted = []; 
    sorted.push(words[i].toLowerCase()); 
}; 
+2

建議供將來參考:當您通過其中一個答案更新問題中的代碼時,請不要編輯原始(不正確)代碼。相反,保持原始代碼不變,並在問題末尾添加一個新的部分,例如「我修改了XYZ答案中建議的代碼,但它仍然不起作用,下面是新代碼:...」這樣問題和答案將對未來的訪問者更有意義。 – 2013-04-27 17:57:54

+1

是的,我會的。謝謝。 – 2013-04-27 19:16:43

回答

7

隨着陣列中,+=運營商不會做你所期望的 - 它調用數組.toString和連接它們。相反,您要使用array push method

var sorted = []; 
for (var i = 0; i < words.length; i++) { 
    sorted.push(words[i].toLowerCase()); 
} 
sorted.sort(); 
+0

我更新了一些代碼(請參閱),但現在它只返回1個元素,而不是全部。 – 2013-04-27 15:31:50

+2

你有循環內的'sorted = [];'它重複覆蓋一個新的數組(並且只有最後一個,最後一個項目將被返回)。查看我的答案,瞭解代碼的外觀。 – Bergi 2013-04-27 15:45:22

+0

是的,我比較你的代碼和我的意識,這是問題所在。謝謝! – 2013-04-27 16:08:11

0

toLowerCase()是功能,你應該寫()

+0

愚蠢的錯誤。仍然沒有工作,雖然 – 2013-04-27 15:23:22

0

結果與toLowerCase方法不會被調用在你的代碼後,僅參考。在循環更改行:

sorted += words[i].toLowerCase(); 

Add()方法調用的方法。

完整的工作代碼:

var words = ["FOO", "BAR"]; 
var sorted = []; 

for (var i = 0; i < words.length; i++) { 

     sorted.push(words[i].toLowerCase()); 
}; 

console.log(sorted); 
0

我假設你正在聲明sorted作爲數組。如果是使用push方法,而不是+=

for (var i = 0; i < words.length; i++) { 
    sorted.push(words[i].toLowerCase()); 
} 
30

推送被過度使用。

for (var i = 0, L=words.length ; i < L; i++) { 
    sorted[i]=words[i].toLowerCase(); 
} 

如果你想快速有一個非常大陣的話,調用toLowerCase once-

sorted=words.join('|').toLowerCase().split('|'); 
+3

+第二個 – ZuzEL 2014-08-21 19:27:09

+0

不錯的加入技巧 – Martial 2015-03-23 14:24:59

1

我知道這是以後的答案,但我發現了一種非常直接和容易!

yourArray = ['this', 'iS an', 'arrAy']; 
console.log(yourArray); // ["this", "iS an", "arrAy"] 

yourLowerArray = yourArray.toLocaleString().toLowerCase().split(','); 
console.log(yourLowerArray); //["this", "is an", "array"] 

解釋這是什麼一樣:

.toLocaleString() - >陣列轉換成用逗號分隔的字符串。

.toLowercase() - >將該字符串轉換爲小寫。

.split(',') - >將小寫字符串轉換回數組。

希望這可以幫助你!

11

,您現在還可以通過使用箭頭功能和陣列的map()方法實現這一目標非常簡單:

var words = ['Foo','Bar','Fizz','Buzz']; 
 
words = words.map(v => v.toLowerCase()); 
 

 
console.log(words);

請注意,這隻會在支持ES2015瀏覽器。換句話說,除了IE8和更低版本。

相關問題