javascript - 按数组循环遍历对象树
问题描述
我有一个关于通过给定数组对象动态遍历对象的问题。
尝试了一些静态代码,但这在有或多或少级别的情况下不灵活
// value = 10
// field = ["data", "input", "level", "0"]
item[field[0]][field[1]][field[2]][field[3]] = value
我不知道从哪里开始使用 for 循环执行此操作的函数。任何人都可以给我一些建议以开始。
解决方案
您可以减少字段并获取对象及其属性。最后用最后一个键分配值。
const
setValue = (object, [...path], value) => {
var last = path.pop();
path.reduce((o, k) => o[k] = o[k] || {}, object)[last] = value;
},
object = {},
value = 10,
fields = ["data", "input", "level", "0"];
setValue(object, fields, value);
console.log(object);