从数组值构造对象的方括号表示法

时间:2013-06-26 09:11:53

标签: javascript

假设我有一个数值未知的数组。例如:['one', 'two', 'three']

如何从中为对象构造方括号表示法?基本上,我需要创建它:var result = myObject['one']['two']['three']

这里的关键是理解数组中可以有任意数量的值,我只需要使用这些值深入到对象中。

2 个答案:

答案 0 :(得分:4)

您可以使用循环:

var o = myObject;

for (var i = 0; i < yourArray.length; i++) {
    o = o[yourArray[i]];
}

或者使用Array.reduce,它看起来更好但在旧浏览器中不起作用:

var o = {
    'one': {
        'two': {
            'three': 'four'
        }
    }
};

['one', 'two', 'three'].reduce(function(object, key) {
    return object[key];
}, o);

答案 1 :(得分:1)

Array.reduce()的帮助下,简短而准确:

var o = { 'one': { 'two': { 'three': 'five' } } };
["one","two","three"].reduce(function(prev,cur){return prev[cur]},o);

从IE9开始减少作品。