- splice 3
Assignment
시장을 봐왔는데 바구니를 보니 곰팡이가 피어있습니다.
바구니에서 곰팡이를 제거하는 함수를 작성해주세요!
let basket = [['양파','곰팡이'],['곰팡이','빵','딸기잼'],['귤','곰팡이','사과']];
removeGerm(basket) // [ [ '양파' ], [ '빵', '딸기잼' ], [ '귤', '사과' ] ];
let basket = [['양파','곰팡이'],['곰팡이','빵','딸기잼'],['귤','곰팡이','사과']];
function removeGerm(arr) {
for(let i=0; i < arr.length; i++){
//i는 3미만까지: 0 1 2
for(let j = 0; j <= arr[i].length; j++){
//j는 arr[0] 이면 2이하 까지: 0 1 2
//j는 arr[1] 이면 3이하 까지: 0 1 2 3
//j는 arr[2] 이면 3이하 까지: 0 1 2 3
if(arr[i][j] === '곰팡이'){
//[0][1], [1][0],[2][1] 곰팡이
arr[i].splice(j,1)
//곰팡이인 경우
//[0][1=j], ['양파','곰팡이']
//[1][0=j], ['곰팡이','빵','딸기잼']
//[2][1=j], ['귤','곰팡이','사과']
}
}
}
return arr;
}
console.log(removeGerm(basket))
- 배열
basket[0][1] => 출력: 곰팡이
basket[1][0] => 출력: 곰팡이
basket[2][1] => 출력: 곰팡이
- splice() 문법
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
<매개변수>
출처: mdn
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
처음에는 이중 for문과 2차원 배열구조에 대한 이해가 부족하여 어떻게 접근해야할지 감이 잡히지 않았다.
그래서 유튜브 등을 통해서 이중 for문과 2차월 배열구조에 관한 영상들을 찾아보면서 전체적인 개념을 이해하려고 하였고, 그 덕분에 어떻게 접근해야할지 방향은 알게 되었다.
그 다음에 내가 마주하게 된 문제는 이중 for문과 2차원 배열로 '곰팡이'라는 값을 조건문을 통해서 걸러내게 된다면 어떻게 그 값을 삭제할 수 있냐는 것을 알지 못해서 구글링을 해보았고 아래의 블로그 글 덕분에 어떻게 해야하는지에 대해서 알게 되었다.
let arr = ['a', 'b', 'b', 'c'];
// 원소 'b' 삭제
for(let i = 0; i < arr.length; i++) {
if(arr[i] === 'b') {
arr.splice(i, 1);
i--;
}
}
document.writeln(arr); // ['a', 'c']
조건문을 통해서 '곰팡이'라는 값을 가진 배열을 가진 값들은 아래와 같다.
[0][1], [1][0],[2][1] : 곰팡이
[0][1 = j], ['양파','곰팡이']
[1][0 = j], ['곰팡이','빵','딸기잼']
[2][1 = j], ['귤','곰팡이','사과']
이렇기 때문에 j번째 인덱스의 값을 1개 삭제를 해주면 결과적으로 '곰팡이'를 제거하고 남은 값들을 받을 수 있게 된다.
이렇게 하나하나씩 직접 내가 값을 대입해보면서 분해해가면서 이해를 하여서 개념들을 이해하면서 문제를 풀 수가 있었다.