JavaScript 작업 JSON 대상 찾기, 삭제, 수정

4326 단어
최근 회사 의 수요 에 따라 js 로 json 에 대한 각종 처 리 를 완성 한 후에 다음 과 같이 정리 합 니 다 (전체 재 귀 처리 방법, 더 좋 은 견해 가 있 으 면 알려 주 십시오).
  • 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)
    

    좋은 웹페이지 즐겨찾기