Ответ 1
Вы можете использовать reduce
:
var array = ['opt1','sub1','subsub1','subsubsub1'];
var object = {};
array.reduce(function(o, s) { return o[s] = {}; }, object);
console.log(object);
Это звучит как простая задача, но я не могу это понять: у меня есть массив:
var array = ['opt1','sub1','subsub1','subsubsub1']
Из этого я хочу сгенерировать следующие объекты:
{
opt1:{
sub1:{
subsub1:{
subsubsub1:{}
}
}
}
}
У меня есть способ сделать это, создав строку и используя eval, но я хочу избежать этой идеи?
Вы можете использовать reduce
:
var array = ['opt1','sub1','subsub1','subsubsub1'];
var object = {};
array.reduce(function(o, s) { return o[s] = {}; }, object);
console.log(object);
вы можете использовать lodash установить функцию
_.set(yourObject, 'a.b.c')
Вы можете использовать reduceRight
, чтобы преобразовать массив в цепочку объектов:
const array = ['a', 'b', 'c'];
const object = array.reduceRight((obj, next) => ({[next]: obj}), {});
// Example:
console.log(object); // {"a":{"b":{"c":{}}}}