プロが教える店舗&オフィスのセキュリティ対策術

関数内で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と表示されるようにするには、
どうしたらよいでしょうか。

A 回答 (3件)

var a = [1,2,3,4];


var arr = a.map(function (_, i) { return 'a' + i; });
    • good
    • 0

for文の中で var arr = new Array(); をしてはいけませんよ。


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

だってforの中でvar arr = new Array()しちゃってたらループごとに初期化されるでしょ。


そこにa1を追加しても最後のものしか有効にならない。

var arr = new Array();
をforの前に持っていかないと。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!