• 締切済み

関数内での繰り返し処理の結果を配列で受け取りたい

関数内でfor文で繰り返し処理を行い、 結果を配列として返すような関数を書きたいと思っています。 function hoge(){ var a = [1,2,3,4]; for (var i=0; i < a.length; i++){ a1 = "a" + i; var arr = new Array(); arr.push(a1); } return arr; } しかし、以下のように 関数hogeの結果を変数bで受け取ってみると、 配列の最後のデータしか表示されません。 var b = hoge(); alert(b); //a3のみが表示される a0, a1, a2, a3と表示されるようにするには、 どうしたらよいでしょうか。

みんなの回答

  • Chaire
  • ベストアンサー率60% (79/130)
回答No.3

var a = [1,2,3,4]; var arr = a.map(function (_, i) { return 'a' + i; });

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

for文の中で var arr = new Array(); をしてはいけませんよ。 これが実行される度に arr 変数は初期化されてしまいます。 var arr = new Array(); を for 文の前に持っていきましょう。

回答No.1

だってforの中でvar arr = new Array()しちゃってたらループごとに初期化されるでしょ。 そこにa1を追加しても最後のものしか有効にならない。 var arr = new Array(); をforの前に持っていかないと。

関連するQ&A