假设该字符串:
var string = 'abcd';
//I split the string by characters
var keys = string.split(''); // that return ['a','b','c','d'];
现在我有一个这样的对象:
var object = {
a:{
b:{
c:{
d:{
}
}
}
}
}
如何以编程方式构建类似于:
object['a']['b']['c']['d']
;
来自keys
数组;
答案 0 :(得分:1)
使用reduce
,将当前嵌套对象作为累加器传递(以基础对象为初始值):
var object = {
a:{
b:{
c:{
d:{
foo: 'bar'
}
}
}
}
};
var string = 'abcd';
var keys = string.split('');
console.log(
keys.reduce((a, key) => a[key], object)
);
答案 1 :(得分:1)
我认为您可以反转数组并保持设置父子对象
var string = 'abcd';
var arr = string.split('');
var result = arr.reverse().reduce(function(obj, key) {
var o = {};
o[key] = obj;
return o;
}, {});