반복 검색 트리 구조 및 검색 값 반환

3431 단어
여기서 처리할 데이터는 트리 구조입니다.아래와 같다
let options=
[
    {"value":1,"label":" ","children":[
             {"value":68,"label":" ","children":[{"value":681,"label":"--- ---    ","children":null}]}, 
             {"value":69,"label":" ","children":[{"value":691,"label":"--- ---","children":null}]},
            {"value":70,"label":" ","children":[{"value":701,"label":"--- ---","children":null}]}]
    },

    {"value":71,"label":" ","children":[
            {"value":72,"label":" ","children":[{"value":721,"label":"--- ---","children":null}]},
            {"value":73,"label":" ","children":[{"value":731,"label":"--- ---","children":null}]},
            {"value":74,"label":" ","children":[{"value":741,"label":"--- ---","children":null}]}]
    },

    {"value":75,"label":" ","children":[
                {"value":76,"label":" ","children":[{"value":761,"label":"--- ---","children":null}]},
                {"value":77,"label":" ","children":[{"value":771,"label":"--- ---","children":null}]},
                {"value":78,"label":" ","children":[{"value":781,"label":"--- ---","children":null}]}]
    }
]

예를 들어 69를 제시하면 우리는'강소성 삼갑', 78을 제시하면'절강성 지역사회 병원'으로 돌아가야 한다.
기본적인 사고방식은 돌아가는 사상을 이용하여 이리저리 찾는 것이다.우리가 검색한 것은 모두 수조이기 때문에 첫 번째 단계는 1층 수조를 순환하여 1층에 우리가 찾아야 할 라벨이 있는지 판단하고 찾으면 찾기를 종료한다.만약 찾지 못하면children이 비어 있는지, 비어 있지 않은지 판단하여 깊이 찾습니다. 이때 원래 함수를 반복해서 호출합니다. 비어 있으면 이 부분은 우리가 찾는 값이 없으면 계속 순환합니다.
이상은 기본적인 사고방식이다. 우리가 전체 나무 구조를 편리하게 해야 할 때 아마도 이런 사고방식이다.다만 우리는 이번에 값을 되돌려야 한다.코드부터 봐.
              var lev = null;
              function searchLabel(voptions,dirOpt) {
                   for (let i = 0; i < voptions.length; i++) {
                        if(lev !== null){
                            break // 
                        } 
                        console.log(i);
                        console.log(voptions[i]);
                        if (voptions[i].value === dirOpt) {
                            console.log(voptions[i].value)
                            let label = voptions[i].label;
                            console.log(label)
                            lev = label //                            
                        } else if (isNotEmptyUtils(voptions[i].children)) {// 
                            searchLabel(voptions[i].children, dirOpt);
                        } else {
                            continue
                        }
                    }
                    return lev
                }

                let label=searchLabel(options,directoryOption);

이상의 갱점은 반환 수치입니다.처음에 나는 값을 얻은 후에searchLabel () 로 돌아가기 전에return을 추가해서 다른 지점의 순환을 할 수 없게 되었다.그래서 먼저 찾은 값을 부여하고 마지막에return을 진행합니다.값을 찾으면 label 값이 비어 있지 않고 프로그램도 순환을 벗어납니다.

좋은 웹페이지 즐겨찾기