본문 바로가기

코드스테이츠(Pre)

recursion 코드 예시2

getElementsByClassName

var getElementsByClassName = function(className){
  // 먼저 인자로 받는 className과 동일한 이름에 class이름을 가진 것을 찾아서
  // 그 class이름과 동일한 class를 가진 것들을 빈 배열에 담아보자.
    
  var result = [];  // 빈배열 생성
    function check(elements){  // elements는 class이름을 확인할 장소 ex) div , span 등등
        if (elements.classList){ // 그 장소에 class를 가진 게 존재한다면
          if (elements.classList.contains(className)){ // 그 클래스에 인자로 받는 className이 있으면
            result.push(elements); // 빈 배열에 넣어준다.
          }
        } 
        // if( elements.hasChildNodes() ){ // 그 장소가 자식노드를 가지고 있다면
          for(var i = 0 ; i < elements.childNodes.length ; i ++)
            check(elements.childNodes[i]); //각 자식노드를 check함수를 재귀해서 실행
        }
      }
      check(document.body); // 바디태그를 인자로 check함수를 재귀 
  return result;
  }

https://developer.mozilla.org/ko/docs/Web/API/Element/classList

 

getObjectById

var util = {
  getObjectById: function(json, id) {

    for(let i = 0; i < json.length; i++){
      for(let key in json[i]){
        if(json[i][key]===id){
          return json[i]
        }
       } else if(Array.isArray(json[i][key])){
          return util.getObjectById(json[i][key],id)
        }
      } 
    }   
  }
}