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());
};
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());
};
您现在也可以通过使用箭头函数和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);
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()
是函数,你应该写()
在它后面
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);
我假设你声明sorted
为一个数组。如果是这样,请使用该push
方法而不是+=
:
for (var i = 0; i < words.length; i++) {
sorted.push(words[i].toLowerCase());
}
words.forEach(function (item, index) {
words[index] = item.toLowerCase();
});