21
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());
};
4

8 回答 8

69

您现在也可以通过使用箭头函数和map()Array 的方法非常简单地实现这一点:

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);

于 2016-12-07T07:45:40.533 回答
45

push 被过度使用。

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

如果您想要快速并且有大量单词,请调用 toLowerCase 一次-

sorted=words.join('|').toLowerCase().split('|');
于 2013-04-27T17:34:32.517 回答
16

对于数组,+=操作符不会做你所期望.toString的——它调用数组并将它们连接起来。相反,您想使用数组push方法

var sorted = [];
for (var i = 0; i < words.length; i++) {
    sorted.push(words[i].toLowerCase());
}
sorted.sort();
于 2013-04-27T15:27:12.690 回答
9

我知道这是后来的答案,但我找到了一种更漂亮、更简单的方法:

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(',')-> 将小写字符串转换回数组。

希望这对你有帮助!

于 2016-11-01T16:57:44.153 回答
0

toLowerCase()是函数,你应该写()在它后面

于 2013-04-27T15:21:46.880 回答
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);
于 2013-04-27T15:26:33.587 回答
0

我假设你声明sorted为一个数组。如果是这样,请使用该push方法而不是+=

for (var i = 0; i < words.length; i++) {
  sorted.push(words[i].toLowerCase());
}
于 2013-04-27T15:27:11.533 回答
0
words.forEach(function (item, index) {
    words[index] = item.toLowerCase();
});
于 2021-03-08T05:09:48.973 回答