오늘은 splice3을 어떻게 풀었는지 얘기해보려한다. 2중 for문은 별찍기 이후로 안할것 같았는데.....😓
시장을 봐왔는데 바구니를 보니 곰팡이가 피어있습니다.
바구니에서 곰팡이를 제거하는 함수를 작성해주세요!
입력
let basket = [['양파','곰팡이'],['곰팡이','빵','딸기잼'],['귤','곰팡이','사과']];
출력
removeGerm(basket) // [ [ '양파' ], [ '빵', '딸기잼' ], [ '귤', '사과' ] ];
다차원배열에 접근하기 위해 2중 for문을 작성한다.
i를 arr.length보다 작다라는 조건문을 반복해 배열에 접근한다.
(i는 0,1,2부터 시작하고 arr.length는 길이므로1,2,3부터 시작한다.)
'곰팡이'에 접근하기 위해 j를 arr[i].length만큼 반복한다.
(<=를 해준 이유는 j가 arr[i].length와 같아질 경우도 있기 때문에 해주었다. <만 해주어도 된다.)
만약 arr[i][j]가 '곰팡이'와 같다면 splice를 해준다.
splice를 해줄 때, '곰팡이'가 몇 번째 요소에 있을지 모르니 j를 시작점으로 두고 한개의 요소를 지운다.
여러 개의 '곰팡이'가 있을 경우를 생각하여 j--를 하여 한번 더 조건을 체크해준다.
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;
}
console.log(removeGerm(basket));
💡 j--를 해주는 이유
['귤', '곰팡이', '곰팡이', '사과']일 때, splice(j, 1)로 첫 번째 '곰팡이'가 지워지고 그 다음 두 번째 '곰팡이'는 이미 첫 번째 '곰팡이'를 지우는 조건을 만족했기 때문에 넘어가게 된다. 따라서 결과는 ['귤','곰팡이','사과']가 나오게 된다.