假设我有一个包含未知数量值的数组。例如:['one', 'two', 'three']
。
如何从中构造对象的方括号表示法?基本上,我需要创建这个:var result = myObject['one']['two']['three']
.
他们在这里的关键是要了解数组中可以有任意数量的值,我只需要使用这些值深入到对象的 n 级。
假设我有一个包含未知数量值的数组。例如:['one', 'two', 'three']
。
如何从中构造对象的方括号表示法?基本上,我需要创建这个:var result = myObject['one']['two']['three']
.
他们在这里的关键是要了解数组中可以有任意数量的值,我只需要使用这些值深入到对象的 n 级。
您可以使用循环:
var o = myObject;
for (var i = 0; i < yourArray.length; i++) {
o = o[yourArray[i]];
}
或者 with Array.reduce
,看起来更好,但在旧版浏览器中不起作用:
var o = {
'one': {
'two': {
'three': 'four'
}
}
};
['one', 'two', 'three'].reduce(function(object, key) {
return object[key];
}, o);
在以下帮助下简短而准确Array.reduce()
:
var o = { 'one': { 'two': { 'three': 'five' } } };
["one","two","three"].reduce(function(prev,cur){return prev[cur]},o);
从 IE9 开始减少作品。