превратить массив строк в глубокий объект
допустим есть массив строк['kitchen', 'angle', 'leftSide']
как создать функцию, которая принимая этот массив, возвращает объект с такой структурой:
{
kitchen: {
angle: {
leftSide: null
}
}
}
ВАЖНО! Количество строк в массиве может быть разной, функция должна принимать одномерный массив строк с любым количеством элементов.
Ответы (2 шт):
Автор решения: Алексей Шиманский
→ Ссылка
let arr = ['kitchen', 'angle', 'leftSide'];
let obj = o = {};
arr.forEach(key => {o = o[key] = {}});
console.log(obj);
let test = ['kitchen', 'angle', 'leftSide'];
let last;
let obj = test.reduce((o, val) => {
if (typeof last == 'object')
last = last[val] = {};
else
last = o[val] = {};
return o;
}, {});
console.log(obj);
Автор решения: Aziz Umarov
→ Ссылка
Причин для холивара нет, но по условию вернее этот ответ.
leftSide: null
let arr = ['kitchen', 'angle', 'leftSide'];
let result = arr.reverse().reduce((acc, item)=> { acc = {[item]: acc? {...acc} : null}; return acc;}, null)
console.log(result);
ну или более короткий аналог
let result = ['kitchen', 'angle', 'leftSide'].reverse().reduce((a,i)=>({[i]:a||null}),null);
console.log(result);