javascript以编程方式构建对递归对象键的引用

时间:2018-07-27 21:44:22

标签: javascript

假设该字符串:

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数组;

2 个答案:

答案 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;
}, {});