转换字符串数组以访问对象属性的最佳方法是什么?
例如:
var obj = {
a: {
b: {
c: 4
}
}
};
Run Code Online (Sandbox Code Playgroud)
我有一个阵列
var arr = ['a', 'b', 'c'];
Run Code Online (Sandbox Code Playgroud)
只需访问obj,迭代数组获得4的效率最高是什么?
这是因为不知道对象有多少维度.
使用reduce,[prop]每次访问当前累加器对象,传入obj初始值:
var obj = {
a: {
b: {
c: 4
}
}
};
var arr = ['a', 'b', 'c'];
console.log(
arr.reduce((a, prop) => a[prop], obj)
);Run Code Online (Sandbox Code Playgroud)
对于ES5,只需将箭头功能转换为标准功能:
var obj = {
a: {
b: {
c: 4
}
}
};
var arr = ['a', 'b', 'c'];
console.log(
arr.reduce(function(a, prop) {
return a[prop];
}, obj)
);Run Code Online (Sandbox Code Playgroud)
也就是说,用最新最好的语言编写它会好得多,如果你需要支持古老的浏览器,可以在以后使用Babel在构建步骤中自动将代码转换为ES5.