使用for循环而不是map返回以小写形式返回数组的所有值

时间:2013-04-27 15:20:12

标签: javascript

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

8 个答案:

答案 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()方法来实现此目的:

&#13;
&#13;
var words = ['Foo','Bar','Fizz','Buzz'].map(v => v.toLowerCase());
console.log(words);
&#13;
&#13;
&#13;

请注意,map()仅适用于支持ES2015的浏览器。换句话说,除IE8以外的任何东西。

同样,箭头功能在IE中根本不起作用。对于旧版浏览器安全版,您需要使用匿名函数:

&#13;
&#13;
var words = ['Foo','Bar','Fizz','Buzz'].map(function(v) {
  return v.toLowerCase();
});
console.log(words);
&#13;
&#13;
&#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();
});