简单的while循环set Object 属性 (有则合并,无则创建)

function setDescendantProp(obj, desc, fun) {
    const arr = desc.split('.');
    let prop = arr.shift();

    // 循环路径赋值
    while (arr.length){
        if(!obj[prop]){
            obj[prop] = {};
        }
        // eslint-disable-next-line no-param-reassign
        obj = obj[prop]
        prop = arr.shift();
    }

    obj[prop] = fun;
}


path:目标位置
value:目标值
obj:目标
function editFn(path, value, obj) {
    const arr = path.split('.')
    const len = arr.length - 1
    arr.reduce((cur, key, index) => {
        if (!(cur[key]))
            throw `${key} 不存在!`
        if (index === len) {
            cur[key] = value
        }
        return cur[key]
    }, obj)
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容