2016-11-24 8 views
1

Я хочу нажать свойство в многомерном массиве. В этом коде я получаю TypeError: myArr.second [я] .С не функция ...свойство push в многомерном массиве

var myArr = { 
"main": 2000, 
"second": [ 
{ 
    "step1": 10, 
    "step2": "lorem ipsum", 
    "step3": "bla, bla", 
    }, 
    { 
    "step1": 20, 
    "step2": "TEXT, TEXT", 
    "step3": "bla, bla, bla", 
}] 
}; 


for(i=0; i < myArr.second.length; i++){ 
    var toPush = {}; 
    toPush["step4"] = "text"; 
    myArr["second"][i].push(toPush); 
} 

Кто-нибудь может мне помочь?

+0

это объект, так что вы не можете использовать кнопочный метод здесь – Mahi

+0

Возможный дубликат [JavaScript Создание массива в объекте и передавать данные в массив] (http://stackoverflow.com/questions/38306219/javascript-creating -array-in-object-and-push-data-to-the-array) – Marcs

+0

«Второй» - это массив, и вы можете использовать push здесь. Но myArr - это Object, а не массив. 'myArr.second [0] .step4 =" text "' должен работать. – michelgotta

ответ

1

Используйте dot notation или bracket notation, чтобы определить собственность.

for(i=0; i < myArr.second.length; i++){ 
    myArr["second"][i].step4 = "text"; 
} 


Или вы можете использовать Object.assign метод для копирования свойств из другого объекта.

for(i=0; i < myArr.second.length; i++){ 
    var toPush = {}; 
    toPush["step4"] = "text"; 
    Object.assign(myArr["second"][i], toPush); 
} 
+1

спасибо, он отлично работает. – user7206180

+0

@ user7206180: рад помочь вам :) –