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

3

如何将字符串数组转换为访问对象属性的最佳方法?

例如:

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

我有一个数组。
var arr = ['a', 'b', 'c'];

如何最有效地遍历数组以仅通过访问 obj 获取 4?

这是在不知道对象有多少维的情况下。


有些算法可以解决这种情况并产生相同的输出,但对于其他输入则生成不同的输出。最好您扩展一下输入的示例,例如针对兄弟键的期望输出是什么。每个键都是一个级别吗? - Andre Figueiredo
可能是 如何使用键的数组从Javascript对象中获取值 的重复问题。 - Andre Figueiredo
1个回答

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。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接