Добавить объект в другой объект
Помогите пожалуйста решить задачу. Есть объект
var materials = {
"Красный кирпич": {"Глина" : 10, "Цемент" : 5, "Вода" : 8},
"Белый кирпич": {"Песок" : 5, "Цемент" : 4,"Вода" : 3}
}
Есть текст:var string = '[Силикат] состоит из следующих элементов: (Шлак), (Цемент), (Добавки). Практичный стройматериал.'Регулярным выражением получаем из текста название материала и его составляющие:
var material_name = string.split('[')[1].split(']')[0]; // Силикат
var material_components = string.match(/\([^\)]*\)/g)//(Шлак), (Цемент), (Добавки)
Как объект materials привести к виду типа:
materials = {
"Красный кирпич": {"Глина" : 10, "Цемент" : 5, "Вода" : 8},
"Белый кирпич": {"Песок" : 5, "Цемент" : 4,"Вода" : 3},
"Силикат": {"Шлак", "Цемент", "Добавки"}
}
Можно ли добавить "Силикат" в виде массива? Или только как объект? Просто у компонентов "Шлак", "Цемент", "Добавки" нет значений. |
var string = '[Силикат] состоит из следующих элементов: (Шлак), (Цемент), (Добавки). Практичный стройматериал.'
var material_name = string.split('[')[1].split(']')[0]; // Силикат
var material_components = string.match(/\([^\)]*\)/g)//(Шлак), (Цемент), (Добавки)
var materials = {
"Красный кирпич": {"Глина" : 10, "Цемент" : 5, "Вода" : 8},
"Белый кирпич": {"Песок" : 5, "Цемент" : 4,"Вода" : 3}
}
function f (obj,a,b) {
obj[a] = {}
for(var i = 0; i < b.length; i++) obj[a][b[i]] = null;
}
f(materials,material_name, material_components)
alert(JSON.stringify(materials))
|
Цитата:
|
изменил undefined на null и все заработало :)
|
caetus,
спасибо вам большое :) |
var materials = {
"Красный кирпич": {"Глина" : 10, "Цемент" : 5, "Вода" : 8},
"Белый кирпич": {"Песок" : 5, "Цемент" : 4,"Вода" : 3}
};
var str = '[Силикат] состоит из следующих элементов: (Шлак), (Цемент), (Добавки). Практичный стройматериал.';
var key = str.split(']', 1)[0].split('[', 2)[1];
materials[key] = {};
str.match(/\(.*?\)/g).forEach(function(el){
materials[key][el.replace(/(^.|.$)/g, '')] = null;
});
console.dir(materials);
alert(JSON.stringify(materials));
вариант :) |
| Часовой пояс GMT +3, время: 12:08. |