【JavaScript笔记】如何快速设置Object多维对象的某个属性或值

沉梦小哥哥
预计阅读时长 14 分钟
位置: 首页 JavaScript 正文

前端在部分业务下会有一种场景,需要修改某个对象单独的属性或值且修改后立即生效(如页面缓存、样式布局DIY调整配置),当这个对象是3维或者3维以上时,

且传参的数据不一致,如果配置项较多,死方法就是每个对象都去一遍(比较愚蠢的写法)

这个时候的代码量就比较多,那么如何减少这个代码量呢??

下面我就写了一个函数,可以通过固定代码即可达到减少代码量

const setValue = function(data, key, value) {
    if ('object' !== typeof data) {
        return null
    }
    if (key.indexOf('.') > 0) {
        let index1 = key.split('.')[0];
        let index2 = key.replace(new RegExp('^' + index1 + '\.', 'g'), '');
        if (data.hasOwnProperty(index1)) {
            data[index1] = setValue(data[index1], index2, value);
        }
        return data;
    } else {
        if (data.hasOwnProperty(key)) {
            data[key] = value
        }
        return data
    }
}


以下是测试效果和测试代码

const setValue = function(data, key, value) {
    if ('object' !== typeof data) {
        return null
    }
    if (key.indexOf('.') > 0) {
        let index1 = key.split('.')[0];
        let index2 = key.replace(new RegExp('^' + index1 + '\.', 'g'), '');
        if (data.hasOwnProperty(index1)) {
            data[index1] = setValue(data[index1], index2, value);
        }
        return data;
    } else {
        if (data.hasOwnProperty(key)) {
            data[key] = value
        }
        return data
    }
}

const a = {
    a: '1',
    b: {
        c: {
            name: {
              dd:'测试'
            },
            value: 'data'
        }
    }
}

console.info(JSON.parse(JSON.stringify(a)));

console.info(setValue(a, 'b.c.value', '66666'));

9NXTCWB%L27MJ3)DCHFK_PC.png

-- 展开阅读全文 --
头像
【vue笔记】运行npm install or npm update 报错 path git errno -4058
« 上一篇 2022-06-08
【沉梦云商城插件篇】解决部分用户无法在线安装插件/模板的问题
下一篇 » 2022-06-25
取消
微信二维码
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]