javascript - 如何在javascript中根据数组中的路径遍历嵌套对象?

标签 javascript arrays object

const obj = { 
    first: { second: { third: 'done'} },
    hello: { world: { foo: { bar: 'wrong' } } },
    second: { third: 'wrong'}
};

const arr = [ 'first', 'second', 'third' ];

function traverse(obj, arr) {
    
}
// output = 'done'

给定第一个输入作为嵌套对象,第二个输入作为包含字符串的数组,根据数组设置的路径遍历嵌套对象以输出 done 的最佳方法是什么?

最佳答案

您可以减少数组arr,在每一步将累加器更改为更深的对象。

const obj = { 
  first: { second: { third: 'done'} },
  hello: { world: { foo: { bar: 'wrong' } } },
  second: { third: 'wrong'}
};
const arr = [ 'first', 'second', 'third' ];

function traverse(obj, arr) {
  return arr.reduce((acc, curr) => acc ? acc[curr] : undefined, obj);
}

console.log(traverse(obj, arr));
console.log(traverse(obj, ['hello', 'world', 'foo']));
console.log(traverse(obj, ['first', 'hello', 'world']));

关于javascript - 如何在javascript中根据数组中的路径遍历嵌套对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58314552/

相关文章:

javascript窗口卸载事件

javascript - 有没有更好的方法将两个值中的最大值分配给一个属性?

python - 提取 Nx3 数组的特定行,每列都满足条件

java - 如何接受数组的输入

mysql - 使用asp.net和c#将图像存储到byte[]到Mysql中

php - 如何访问第 N 个对象属性名称?

javascript - 如何重新加载 JCarousel

javascript - 需要帮助理解书中的这段代码 "jquery in action"

javascript - 使用 JavaScript 和 CSS 的降雪动画 - 无法读取未定义的属性 'length'

javascript - 数组是 JavaScript 中对象的特例吗?