Для создания вложенного объекта мы можем сделать, как показано ниже
function assign(obj, keyPath, value) {
lastKeyIndex = keyPath.length-1;
for (var i = 0; i < lastKeyIndex; ++ i) {
key = keyPath[i];
if (!(key in obj))
obj[key] = {}
obj = obj[key];
}
obj[keyPath[lastKeyIndex]] = value;
}
Usage:
var settings = {};
assign(settings, ['Modules', 'Video', 'Plugin'], 'JWPlayer');
, что приведет к этому
"{"Modules":{"Video":{"Plugin":"JWPlayer"}}}"
Я хотел создать вложенный объект, у которого будет несколько дочерних элементов также на одном уровне.
У меня есть следующие данные
{
"children": [{
"children": [{
"children": [],
"label": "A",
"OrganizationId": 152,
"id": 152
}, {
"children": [{
"children": [{
"children": [],
"label": "B",
"OrganizationId": 180,
"id": 180
}, {
"children": [],
"label": "C",
"OrganizationId": 181,
"id": 181
}],
"label": "D",
"OrganizationId": 166,
"id": 166
}],
"label": "E",
"OrganizationId": 154,
"id": 154
}, {
"children": [],
"label": "F",
"OrganizationId": 157,
"id": 157
}, {
"children": [{
"children": [{
"children": [],
"label": "G ",
"OrganizationId": 182,
"id": 182
}],
"label": "H",
"OrganizationId": 167,
"id": 167
}],
"label": "I",
"OrganizationId": 155,
"id": 155
}]
}]
}
Так что я должен изменить вышеуказанный объект
т.е. выбрать только значение метки и назначить его в качестве ключа в новом объекте
поддерживая ту же иерархию (ожидаемый результат - ниже)
Ожидаемый результат:
{
"A": "",
"E": {
"D": {
"B": "",
"C": ""
}
},
"F": "",
"I": {
"H": {
"G": ""
}
}
}
было бы очень полезно, если бы кто-то мог дать подсказку или решение для реализации этого. Был бы очень признателен!
Пожалуйста, прежде чем подавать отрицательные голоса, скажите, что нужно отредактировать или что не так с этим вопросом.
Спасибо!