Как создать из массива ключей создать многомерный объект?
Не знаю как точно описать задачу, поэтому лучше покажу на примере:
допустим есть массив ['first', 'second', 'third'] и значение x;
нужно получить вот такой объект с большой вложенностью:
{
first: {
second: {
third: x
}
}
}
Ответы (2 шт):
Автор решения: Great Tech
→ Ссылка
Подобная задача решается рекурсивно. В данном случае, я полагаю, оптимальным подходом будет переписывание объекта в сам же объект, под следующим ключом, начиная с последнего ключа (самый вложенный объект) и кончая первым.
let keys = ["a", "b", "c", "d"];
let obj = {};
obj[keys.pop()] = 123;
for(key of keys.reverse())
obj = {[key]: obj}
console.log(obj);
Автор решения: SwaD
→ Ссылка
Для преобразования массива в многомерный объект, можно воспользоываться методом reduceRight
const arrTemplate = ['first', 'second', 'third', '1', '2', '3'];
const x = 'value'
function toObj(arr, z) {
return arr.reduceRight((acc, item) => ({[item]: acc}), z)
}
console.log(toObj(arrTemplate, x))