首页 > 解决方案 > 按数组循环遍历对象树

问题描述

我有一个关于通过给定数组对象动态遍历对象的问题。

尝试了一些静态代码,但这在有或多或少级别的情况下不灵活

// value = 10
// field = ["data", "input", "level", "0"]
item[field[0]][field[1]][field[2]][field[3]] = value

我不知道从哪里开始使用 for 循环执行此操作的函数。任何人都可以给我一些建议以开始。

标签: javascriptarraysobjectfor-loop

解决方案


您可以减少字段并获取对象及其属性。最后用最后一个键分配值。

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);


推荐阅读