最近在做一个复杂表单,表单通过后台返回的一个对象渲染,用户操作表单的同时更新此对象的值,用户提交表单时把对象传回,由于这个对象嵌套比较深,更新里面的一些value比较麻烦,于是封装了一个函数用来更新对象。
函数接受三个参数,
keys:作为寻址路径的key集合,key按照嵌套的由浅到深依次写入该数组中。
value:要写入的值
target:要修改的对象
举个例子,有个对象object,现在要把它c属性对应的value改为2.
const object={a:{b:{c:1}}
方法调用
updateObjectValueByKeys(['a','b','c'], 2, object)
函数代码:
function updateObjectValueByKeys(keys, value, target) {
try {
let address = target;
keys.forEach((d, i) => {
if (i < keys.length - 1) {
if (address[d] === undefined) {
address[d] = {};
}
address = address[d];
}
});
const finalKey = keys[keys.length - 1];
address[finalKey] = value;
} catch (e) {
console.log(e);
}
}