js 根据路径查找对象中的某个属性,并且更改该属性的值

根据路径查找对象中的某个属性,并且更改该属性的值

    var obj1 = {"people" : ["Jack","Tom","Andy"]}; //原对象
   /*
    * objectStr 这个是字符串格式
   *path 属性的路径
* val 要改成的值
*/
function findMod(objectStr, path,val) {

      var props = path.split(".");
      var th="";
      for(var i=0;i<props.length;i++){
        th += "['"+props[i]+"']";
      }
      //判断是对象还是字符串
      var isObj = new Function("return "+objectStr+th);
      console.log(typeof isObj());
      if(typeof isObj() == 'object'){
        e = new Function(objectStr+th+'='+val);
      }else if(typeof isObj() == 'string'){
        e = new Function(objectStr+th+'="'+val+'"');
      }
      e();

    }

  findMod('obj1',"people.2.Andy",'[{"a":"hhh"},{"a":"888"}]'); //修改一个子对象
  findMod('obj1',"people.2.Andy.0.a",'咳咳咳'); //修改一个属性值(字符串)

  document.write(obj1['people'][2].Andy[0].a);


 

posted @ 2018-09-16 09:01  叨叨的蜗牛  阅读(6753)  评论(0)    收藏  举报