var sorted = words.map(function(value) {
return value.toLowerCase();
}).sort();
此代码以小写形式返回单词数组中的所有值并对其进行排序,但我想对for
循环执行相同操作,但我不能。
我试过了:
for (var i = 0; i < words.length; i++) {
sorted = [];
sorted.push(words[i].toLowerCase());
};
答案 0 :(得分:36)
推送过度使用。
for (var i = 0, L=words.length ; i < L; i++) {
sorted[i]=words[i].toLowerCase();
}
如果您想要快速并且拥有非常多的单词,请调用一次ofLowerCase -
sorted=words.join('|').toLowerCase().split('|');
答案 1 :(得分:31)
您现在也可以通过使用箭头函数和数组的map()
方法来实现此目的:
var words = ['Foo','Bar','Fizz','Buzz'].map(v => v.toLowerCase());
console.log(words);
&#13;
请注意,map()
仅适用于支持ES2015的浏览器。换句话说,除IE8以外的任何东西。
同样,箭头功能在IE中根本不起作用。对于旧版浏览器安全版,您需要使用匿名函数:
var words = ['Foo','Bar','Fizz','Buzz'].map(function(v) {
return v.toLowerCase();
});
console.log(words);
&#13;
答案 2 :(得分:11)
对于数组,+=
运算符没有按预期执行 - 它在数组上调用.toString
并连接它们。相反,您想使用array push
method:
var sorted = [];
for (var i = 0; i < words.length; i++) {
sorted.push(words[i].toLowerCase());
}
sorted.sort();
答案 3 :(得分:4)
我知道这是后来的答案,但我找到了一种非常简单直接的方式!
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()
- &gt;将数组转换为以逗号分隔的字符串。
.toLowerCase()
- &gt;将该字符串转换为小写。
.split(',')
- &gt;将小写字符串转换回数组。
希望这能帮到你!
答案 4 :(得分:0)
toLowerCase()
是函数,你应该在它之后写()
答案 5 :(得分:0)
您的代码中未调用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);
答案 6 :(得分:0)
我假设您将sorted
声明为数组。如果是,请使用push
方法而不是+=
:
for (var i = 0; i < words.length; i++) {
sorted.push(words[i].toLowerCase());
}
答案 7 :(得分:0)
words.forEach(function (item, index) {
words[index] = item.toLowerCase();
});