Добавить объект в другой объект
Помогите пожалуйста решить задачу. Есть объект
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, время: 00:50. |