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

Return all values from array in lowercase using for loop instead of map

本文关键字:数组 返回 循环 for map 使用      更新时间:2023-09-26
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);

push被过度使用。

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()是函数,你应该在它后面写()

我假设您将sorted声明为数组。如果是这样,请使用push方法而不是+=:

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

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);
words.forEach(function (item, index) {
    words[index] = item.toLowerCase();
});