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()アロー関数と配列のメソッドを使用して、これを非常に簡単に実現することもできます。

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

プッシュは使いすぎです。

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

高速で単語の配列が非常に大きい場合は、toLowerCase を 1 回呼び出します。

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

() を追加してメソッドを呼び出します。

完全な作業コード:

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 に答える