从for循环形成一个数组

时间:2014-06-16 08:59:29

标签: javascript

我有一个for循环,其中我逐个获取所有值,但我需要将这些值形成一个数组。

任何人都可以让我知道如何将所有值组合成一个数组。

for (var i = 0; i < marray.length; i++) {
    mId = marray[i].id;
    var yourArray = [];
    yourArray.push(marray);
    console.log(marray);
}

从上述代码获得的输出是:["0123"] and ["3456"]

But the expected output is ["0123","3456"]

4 个答案:

答案 0 :(得分:6)

您正在为每个循环迭代创建一个新的yourArray。而不是这样做,在开始循环之前只创建一次:

var yourArray = [];
for (var i = 0; i < marray.length; i++) {
    mId = marray[i].id;
    yourArray.push(mId);
}

请注意,我已将代码更改为yourArray.push(mId),因为问题似乎是您想要的 - 而不是yourArray.push(marray)

更简洁的方法是使用数组map函数,如下所示:

var yourArray = marray.map(function(row) { return row.id; });

最后一个版本在IE 8中无法开箱即用,所以如果你关心它,你需要采取适当的措施。

答案 1 :(得分:0)

在外部声明变量for循环..

  var yourArray = [];


     for (var i = 0; i < marray.length; i++) {
                    mId = marray[i].id;
                    yourArray.push(mid);

                }
 console.log(yourArray);

答案 2 :(得分:0)

在循环之前初始化yourArray

试试这个

var yourArray = [];
for (var i = 0; i < marray.length; i++) {
    mId = marray[i].id;
    yourArray.push(mId);
}

答案 3 :(得分:0)

每次进入循环时,var yourArray都会初始化为null。在循环外定义它。