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);
    }
经验分享 程序员 微信小程序 职场和发展