我循环遍历一个对象数组,在其中,我必须为每个对象追加一个新数组,并在该新数组中也推送一些值。以下是代码:
for (var i = 0, j = arr.length; i < j; i++) {
arr[i]['newArray'].push(i)
}
通常,我这样做是为了通过obj['newProperty']
将新属性附加到对象,但从未尝试过数组,但这并不起作用。显然这不是正确的,但我如何才能实现这一目标。目标是创建一个新数组,追加对象并在该数组中存储值,一次性完成。
答案 0 :(得分:2)
目标是创建一个新数组,追加对象并在该数组中存储值,一次性完成。
我认为你的意思是:
arr[i]['newArray'] = [i];
也可以写成
arr[i].newArray = [i];
使用数组初始值设定项(i
)创建一个包含[i]
值的新数组,并将该数组指定为对象{{1}上属性newArray
的值}}
答案 1 :(得分:0)
你走了:
for (var i = 0, j = arr.length; i < j; i++) {
// Check if the array don't exists
if (!arr[i]['newArray']) {
// add a new array
arr[i]['newArray'] = [];
}
// otherwise push the value in both the case
arr[i]['newArray'].push(i)
}
修改:一气呵成:
for (var i = 0, j = arr.length; i < j; i++) {
arr[i]['newArray'] = [i];
}
答案 2 :(得分:0)
你出错的地方是,你每次都没有创建一个新阵列。您必须创建一个新数组,然后将值推入其中。
for (var i = 0, j = arr.length; i < j; i++) {
//checking and creating new array.
newArr = arr[i]['newArray'] || (arr[i]['newArray'] = []);
newArr.push(i);
}