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