2016-10-12 1 views
0

У меня есть объект, как это:Как нажимать объект на ключевой массив javascript?

var newService = new Service({ 
    name: service.name, 
    description: service.description, 
    supplier: service.supplier, 
    price: service.price, 
    info_requires: [] 
}); 

Вот модальный Service

var serviceSchema = new Schema({ 
    name: String, 
    description: String, 
    supplier: String, 
    price: Number, 
    info_requires: [{ 
     name: String, 
     type: Number, // 1-text 2-combobox 3-textarea 
     limit: [] 
    }], 
}); 

Вот мои данные:

var services = [{ name: "Test", description: "Des", supplier: "Sup", price: 123, icon: "icon", type: 1, open: 1, info_requires: [ { name: "Age", type: 1, limit: [] }, { name: "Bla bla", type: 1, limit: [] } ] }]

Я передавать данные info_requires[] так:

newService.info_requires.push(service.info_requires[i]) 

или

newService.info_requires[i].name = (service.info_requires[i].name) Но это не сработало с ошибкой: Cannot set property 'name' of undefined? Я сделал что-то неправильно?

+0

Is ** some_object ** определено? – user2182349

+4

Было бы неплохо, если бы вы могли дать некоторый контекст в конструкторе 'Сервис'. – Jerry

+0

Похож на смесь литерала и конструктора – user2182349

ответ

0

В случае «Service» является пользовательский объект, созданный вами, это может сделать трюк

var service ={ 
name: "", 
description: "", 
supplier: "", 
price: "", 
info_requires: [] 
}; 

service.info_requires.push(some_object); 
new Service(service); 
+0

Но ... что, если OP нуждается в каких-либо других функциях, которые предоставляет конструктор 'Service()'? – nnnnnn

+0

он все еще может создать «новую службу (службу)», потому что это объект с правильными свойствами –

0

Проверьте, если ключ существует первый, если не создать массив/объект для ключа как

if (newService.info_requires === undefined) { 
    newService.info_requires = []; 
} 
newService.info_requires.push(service.info_requires[i]); 

Похожие на

if (newService.info_requires[i] === undefined) { 
    newService.info_requires[i] = {}; 
} 
newService.info_requires[i].name = (service.info_requires[i].name);