js对象多层属性创建及赋值
今天由于要给一个图元的配置对象设置值,之前的都是两层 , 现在四层,考虑不确定性,如下修改
let setDeepValue = (object, path, value) => {
let fieldPath = [...path];
if (fieldPath.length) {
const key = fieldPath.shift();
if (object && object[key]){
object[key] = setDeepValue(object[key], fieldPath, value);
}
} else {
object = value;
}
return object;
};
var abc = {
a:{
b:{
c:{
d:{
e:{
f:123}}}}}}
setDeepValue(abc,[a,b,c,d,e,f],456)
//abc {a:{b:{c:{d:{e:{f:456}}}}}}
新增一个类似的方法 即使对象里没有值也会创建出一个对象
SetVal = (object, field, val) => {
const newObj = object
var arr = field.split("_");
var str = newObj;
for (var i = 0; i < arr.length; i++) {
str += "." + arr[i];
if (eval(str) == undefined) {
eval(str + "={}");
}
}
eval(str + "=" + val);
}
