如何将字符串数组转换为访问对象属性的最佳方法?
例如:
var obj = {
a: {
b: {
c: 4
}
}
};
我有一个数组。
var arr = ['a', 'b', 'c'];
如何最有效地遍历数组以仅通过访问 obj 获取 4?
这是在不知道对象有多少维的情况下。
如何将字符串数组转换为访问对象属性的最佳方法?
例如:
var obj = {
a: {
b: {
c: 4
}
}
};
var arr = ['a', 'b', 'c'];
如何最有效地遍历数组以仅通过访问 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)
);
var obj = {
a: {
b: {
c: 4
}
}
};
var arr = ['a', 'b', 'c'];
console.log(
arr.reduce(function(a, prop) {
return a[prop];
}, obj)
);
话虽如此,最好使用最新版本的语言编写代码,如果需要支持古老的浏览器,在构建步骤中使用Babel自动将您的代码转换为ES5。