我有一个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"]
答案 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。在循环外定义它。