[英]Return all values from array in lowercase using for loop instead of map
var sorted = words.map(function(value) {
return value.toLowerCase();
}).sort();
這段代碼以小寫形式返回 words 數組中的所有值並對它們進行排序,但我想用for
循環做同樣的事情,但我不能。
我試過了:
for (var i = 0; i < words.length; i++) {
sorted = [];
sorted.push(words[i].toLowerCase());
};
您現在還可以通過使用箭頭函數和數組的map()
方法非常簡單地實現這一點:
var words = ['Foo','Bar','Fizz','Buzz'].map(v => v.toLowerCase()); console.log(words);
請注意map()
僅適用於支持 ES2015 的瀏覽器。 換句話說,除了 IE8 及更低版本之外的任何東西。
同樣,箭頭函數在 IE 中根本不起作用。 對於舊版瀏覽器安全版本,您需要使用匿名函數:
var words = ['Foo','Bar','Fizz','Buzz'].map(function(v) { return v.toLowerCase(); }); console.log(words);
推被過度使用。
for (var i = 0, L=words.length ; i < L; i++) {
sorted[i]=words[i].toLowerCase();
}
如果您想要快速且有大量單詞,請調用 toLowerCase 一次-
sorted=words.join('|').toLowerCase().split('|');
對於數組, +=
運算符不會執行您期望的操作 - 它在數組上調用.toString
並將它們連接起來。 相反,您想使用數組push
方法:
var sorted = [];
for (var i = 0; i < words.length; i++) {
sorted.push(words[i].toLowerCase());
}
sorted.sort();
我知道這是后來的答案,但我找到了一種更漂亮、更簡單的方法:
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(',')
-> 將小寫字符串轉換回數組。
希望這對你有幫助!
toLowerCase()
是函數,你應該在它后面寫()
toLowerCase 方法沒有在您的代碼中被調用,只是被引用。 將循環中的行更改為:
sorted += words[i].toLowerCase();
添加()來調用方法。
完整的工作代碼:
var words = ["FOO", "BAR"];
var sorted = [];
for (var i = 0; i < words.length; i++) {
sorted.push(words[i].toLowerCase());
};
console.log(sorted);
我假設你聲明sorted
為一個數組。 如果是這樣,請使用push
方法而不是+=
:
for (var i = 0; i < words.length; i++) {
sorted.push(words[i].toLowerCase());
}
words.forEach(function (item, index) {
words[index] = item.toLowerCase();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.