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

Kin*_*rog 3 javascript

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

例如:

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的效率最高是什么?

这是因为不知道对象有多少维度.

Cer*_*nce 6

使用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.