JavaScript - 将新数组追加到对象并同时推送值

时间:2016-07-29 09:23:33

标签: javascript arrays

我循环遍历一个对象数组,在其中,我必须为每个对象追加一个新数组,并在该新数组中也推送一些值。以下是代码:

for (var i = 0, j = arr.length; i < j; i++) {
    arr[i]['newArray'].push(i)
}

通常,我这样做是为了通过obj['newProperty']将新属性附加到对象,但从未尝试过数组,但这并不起作用。显然这不是正确的,但我如何才能实现这一目标。目标是创建一个新数组,追加对象并在该数组中存储值,一次性完成。

3 个答案:

答案 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);
}
相关问题