JavaScript 操作JSON对象查找、删除、修改

来源:互联网 发布:mac 安装virtualbox 编辑:程序博客网 时间:2024/06/06 18:32

近日根据公司需求用js对json的各种处理,完成后整理如下(全递归处理方法,如有更好的见解希望告知):

  1. 对JSON的查找
  /**   *    * 获取JSON对应叶子节点的数据   */  function getJSONData(keys, data ){    let [key, ...child] = keys    if (keys.length == 1) {      // delete datas[key] 只能删除对象,删除数组时不能修改数组的长度      return datas[key]    } else {      let {        [key]: data      } = datas      delJSONData(child, data)    }  }

2、删除JSON对象中的某个数据

  /**   * datas 为json对象,keys为json删除的key的数组   */  function delJSONData(keys,type, datas) {    let [key, ...child] = keys    if (keys.length == 1) {       if(type=='array'){           datas.splice(key, 1) // 若删除数组元素用,删除对象用delete       }else{           delete datas[key] // 只能删除对象,删除数组时不能修改数组的长度       }    } else {      let {        [key]: data      } = datas      delJSONData(child,type, data)    }  }

3、增加和修改JSON对象中的某个数据节点

  /**   * 修改JSON对象中的某个数据   */  function setJSONData(keys, value, datas) {    let [key, ...child] = keys    if (keys.length == 1) {      datas[key] = value    } else {      let {        [key]: data      } = datas      setJSONData(child, value, data)    }  }

例子

   let json ={        "teacher": [            {               "name": "jordan",                "sex": "m",                "age": "40"            },            {                "name": "bryant",                "sex": "m",                "age": "28"            },            {                "name": "McGrady",                "sex": "m",                "age": "27"            }        ]    }    let pareType = 'array'    let keystr = 'teacher.0.name'  //teacher为第一个key,0为teacher数组的第一个选项,name为想要删除的对象名    //获取 name = jordan     let name = getJSONData(keystr.split('.'),json)    console.log(name)    //删除 name = jordan对象    delJSONData(keystr.split('.'),pareType,json)    console.log(json)    let name = "123"    setJSONData(keystr.split('.'),name,json) //修改成功    console.log(json)
阅读全文
0 0
原创粉丝点击