2016-07-29 47 views
-1

我正在循環一個對象數組,並且在裏面,我必須追加一個新的數組到每個對象,並且還在這個新數組中添加一些值。下面是代碼:JavaScript - 追加一個新的數組到對象並同時推送值

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

一般情況下,我已經做到了這對追加新的屬性通過obj['newProperty']反對,但從來沒有嘗試過的陣列,但這不起作用。顯然這是不正確的,但我怎麼得到這個工作。目標是創建一個新的數組,追加到該數組中的對象和存儲值,一次性完成。

+0

請加上數組,你說的是。 –

+1

很難說出你在找什麼。您可以在此操作之前和之後顯示您的結構示例嗎? –

回答

2

的目標是創建一個新的數組,追加到對象,並在店內價值該陣列,一氣呵成。

我想你的意思是這樣的:

arr[i]['newArray'] = [i]; 

這也可以寫成

arr[i].newArray = [i]; 

這將創建一個包含值從i使用數組初始化([i])的新陣,並將該數組指定爲對象arr[i]上的屬性newArray的值。

+0

如果屬性已經定義幷包含元素....'arr [i] ['newArray'] = arr [i] ['newArray'] || []; arr [i] ['newArray']。push(i);' –

+1

@PranavCBalan:但技術上並非「一氣呵成」。 :-)(這不是說通常應該是一個目標。) –

+1

真棒,只是一個小小的錯過。所以,我被修改了。謝謝,這就是我一直在尋找的東西。 – whyAto8

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]; 
} 
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); 
} 
+0

我持有新創建的數組的引用,以便我可以在後者中推入值/對象。 –

相關問題