JavaScript | Splice_예제풀이

Lee, Chankyu·2021년 9월 5일
0
post-thumbnail

JavaScript Splice 개념 관련 문제를 풀다 꽤 고민을 하였기에😰, 이와 관련하여 풀이 과정에 대해 작성해보고자 한다.

👉 문제

시장을 봐왔는데 바구니를 보니 곰팡이가 피어있습니다.
바구니에서 곰팡이를 제거하는 함수를 작성해주세요!

let basket = [['양파','곰팡이'],['곰팡이','빵','딸기잼'],['귤','곰팡이','사과']];
 
removeGerm(basket) // [ [ '양파' ], [ '빵', '딸기잼' ], [ '귤', '사과' ] ];

👉 풀이

  • 작성한 최종 코드는 아래와 같다.
let basket = [['양파','곰팡이'],['곰팡이','빵','딸기잼'],['귤','곰팡이','사과']];

function removeGerm(arr) {
  for(let i=0; i < arr.length; i++) {
    for(let j=0; j < arr[i].length; j++) {
      if(arr[i][j] === '곰팡이') {
        arr[i].splice(j,1); // 고민하였던 부분
        j-- // 놓치기 쉬운 부분, 핵심!
      }    
    }
  }
  return arr;
}
  • 이 문제를 풀면서 가장 고민을 많이 했던 부분은 arr[i].splice(j,1);이다.
    이중 반복문, 조건문 그리고 splice를 사용해야한다는건 쉽게 생각 할 수 있었으나 다차원 배열에서의 splice 사용이 다소 낯설었다. 처음엔 arr.splice(arr[i][j].1); 혹은 arr.splice((arr[i][j]),1); 와 같이 기본이 많이 부족한... 코드를 작성하였다.

  • Key point❗-> j--
    -> 배열 안에 '곰팡이'가 여러개 있을 경우 하나만 삭제되고 나머지는 살아있는 현상이 나타날 수 있다. 예를 들면, arr[1] 배열이 ['곰팡이, '곰팡이', '빵', '딸기잼'] 이라고 가정해 보겠다. 위의 코드에서 j--가 없었다면, 첫번째 '곰팡이'가 삭제된 후 두번째 '곰팡이'는 그대로 남아 있었을 것이다. 따라서 j-- 코드를 추가하여 이와 같은 현상을 방지한다.

profile
Backend Developer - "Growth itself contains the germ of happiness"

0개의 댓글