如何在JavaScript中将字符串数组转换为对象属性?

时间:2018-10-09 03:13:58

标签: javascript

转换字符串数组以访问对象属性的最佳方法是什么?

例如:

var obj = {
   a: {
      b: {
         c: 4
      }
   }
};

我有一个数组

var arr = ['a', 'b', 'c'];

仅通过访问obj来遍历数组以获得4的最有效方法是什么?

这是因为不知道对象有多少尺寸。

1 个答案:

答案 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。