转换字符串数组以访问对象属性的最佳方法是什么?
例如:
var obj = {
a: {
b: {
c: 4
}
}
};
我有一个数组
var arr = ['a', 'b', 'c'];
仅通过访问obj来遍历数组以获得4的最有效方法是什么?
这是因为不知道对象有多少尺寸。
答案 0 :(得分:6)
使用reduce
,每次访问当前累加器对象的[prop]
,并以obj
作为初始值:
var obj = {
a: {
b: {
c: 4
}
}
};
var arr = ['a', 'b', 'c'];
console.log(
arr.reduce((a, prop) => a[prop], obj)
);
对于ES5,只需将箭头功能变成标准功能即可:
var obj = {
a: {
b: {
c: 4
}
}
};
var arr = ['a', 'b', 'c'];
console.log(
arr.reduce(function(a, prop) {
return a[prop];
}, obj)
);
也就是说,最好用该语言的最新和最好的版本来编写,如果您需要支持古老的浏览器,请稍后使用Babel在构建步骤中自动将代码转换为ES5。