Есть массив:
var authority = [
"Дзержинським",
"РВ",
"у",
"місті",
"Харкові",
"ГУ",
"ДМС",
"України",
"в",
"Харківській",
"області"
]
Необходимо на его основе получить многоуровневый объект вида:
var obj = {
"Дзержинським": {
"РВ": {
"у": {
"місті": {
"Харкові": {
"ГУ": {
"ДМС": {
"України": {
"в": {
"Харківській": {
"області": {
}
}
}
}
}
}
}
}
}
}
}
};
Массив может быть разной длины, следовательно объект может иметь больший/меньший уровень вложенностей.
Подскажите пожалуйста, как это сделать при помощи цикла? Или возможно есть более правильное решение данной задачи?
Кроме такого больше ничего в голову не приходит :(
var tempObj = {};
tempObj[authority[0]] = {};
tempObj[authority[0]][authority[1]] = {};
tempObj[authority[0]][authority[1]][authority[2]] = {};
tempObj[authority[0]][authority[1]][authority[2]][authority[3]] = {};
tempObj[authority[0]][authority[1]][authority[2]][authority[3]][authority[4]] = {};
tempObj[authority[0]][authority[1]][authority[2]][authority[3]][authority[4]][authority[5]] = {};
...
Вам поможет reduceRight
, заворачиваем каждую итерацию аккумулятор в свойство нового объекта под именем элемента массива.
var authority = [ "Дзержинським","РВ","у","місті","Харкові", "ГУ", "ДМС","України","в","Харківській","області"];
let result = authority.reduceRight((acc, el) => ({[el]: acc}), {});
console.log(result);
upd
сокращенная форма записи лямбды в сниппете эквивалентна функции reduceRight
:
authority.reduceRight(reduceFunc, {});
function reduceFunc(accumulator, element) {
var newAccumulator = {};
newAccumulator[element] = accumulator;
return newAccumulator;
}
var a = ["Дзержинським", "РВ", "у", "місті", "Харкові", "ГУ", "ДМС", "України", "в", "Харківській", "області"]
var res = {}, x = res
for (var key of a) x = x[key] = {}
console.log(res)
.as-console-wrapper.as-console-wrapper { max-height: 100vh }
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Изучаю JavaScript (Чистый)Есть следующий код, описывающий класс PersonFactory, а так же есть конструктор:
Подскажите пожалуйста как решить следующую задачуЯ хочу отобразить список всех пользователей, при этом напротив тех пользователей на которых...
При нажатии на кнопку "Ответ" в данном тесте: 1) проверяется соответствие radiochecked