2013-04-27 7 views
9
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()); 
}; 
+2

今後の参考になる提案:回答の結果として質問内のコードを更新するときは、元の(不正な)コードを編集しないでください。代わりに、元のコードを変更せずに新しいセクションを追加してください。「XYZの回答で示唆されているコードを修正しましたが、まだ動作しません。質疑応答は将来の来館者にとってははるかに意味があります。 –

+1

真実です。ありがとう。 –

答えて

7

をアレイでは、+=オペレータは何を期待しません - それは、アレイ上.toStringを呼び出し、それらを連結します。代わりに、array push methodを使用します。

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

私は少しコードを更新しましたが、今は1つの要素しか返しません。 –

+2

あなたは 'sorted = [];'をループ内に置いています。ここでは、新しい配列を繰り返し上書きします(最後のものだけが返されます)。コードがどのように見えるべきか私の答えを見てください。 – Bergi

+0

さて、私はあなたのコードと私のものを比較し、それが問題であることを認識しました。ありがとう! –

0

toLowerCase()が関数である、あなたはtoLowerCaseメソッドメソッドは、参照のみ、あなたのコード内で呼び出されていないことの後

+0

ダムミス。まだ動作しません –

0

()を記述する必要があります。ループの行を次のように変更します。

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

私はあなたが配列としてsorted宣言していると仮定しています。そう+=ではなくpush方法を使用する場合:

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

プッシュが過度に使用されています。

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

あなたは速いをしたいと単語の非常に大きな配列を持っている場合は、

sorted=words.join('|').toLowerCase().split('|'); 
+3

+ 2番目の人のために – ZuzEL

+0

素敵な参加トリック – Martial

1

ワンスtoLowerCaseメソッドを呼び出して、私は、これは後で答えです知っているが、私はかなり直接的かつ簡単な方法を見つけました!

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(',') - >小文字の文字列を配列に変換し直します。

希望すると、これが役立ちます。

11

また、現在、非常に簡単に矢印機能と配列のmap()方法使用してこれを達成することができます:これが唯一のES2015をサポートするブラウザで動作することを

var words = ['Foo','Bar','Fizz','Buzz']; 
 
words = words.map(v => v.toLowerCase()); 
 

 
console.log(words);

は注意を。言い換えれば、IE8以下のものを除きます。