我试图改变这个:
['value1', 'value2', 'value3']
在此:
{
value: 'value1',
parent: {
value: 'value2',
parent: {
value: 'value3'
}
}
}
反过来......
有人知道在ES6中做到这一点的最佳方法吗?
答案 0 :(得分:1)
您可以使用Array#reduceRight
并在检查父级时构建对象。
var array = ['value1', 'value2', 'value3'],
result = array.reduceRight(
(parent, value) => Object.assign({ value }, parent && { parent }),
undefined
);
console.log(result);

答案 1 :(得分:0)
没有"最好的"方式。
reduce的一些有趣用法:
let converted = {};
['value1', 'value2', 'value3'].reduce((res, el) => (res.value=el, res.parent={}), converted);
console.log(converted);

或者reverse
:
let result = ['value1', 'value2', 'value3'].reverse()
.reduce((res, el) => res?{value: el, parent: res}:{value: el}, null);
console.log(result);

答案 2 :(得分:0)
保持对原始对象的引用,并为每次循环
创建父节点
var arr = ['value1', 'value2', 'value3']
var obj = head = {}
arr.forEach(val=> {
obj['value'] = val;
obj['parent'] = {}
obj = obj.parent
})
console.log(head);