배열에서 숫자 0과 일치하지 않는 값들을 필터링해 0을 제거했습니다. 그런데 이런 방법에는 문제점이 하나 있습니다. 만약 0이 여러 개라면 모든 0이 사라지게 됩니다. 따라서 이와 같은 상황에서는 실제 값을 직접 비교해 삭제하는 것보다 index를 삭제하는 것이 더 좋습니다.
예를 들어, 이 코드에서 numbers 안의 숫자 0의 index는 3입니다. index가 3인 항목을 지우고 싶다면 다음과 같이 코드를 입력하면 됩니다.
const numbers = [-3, -2, -1, 0, 1, 2, 3]; const nextNumbers = numbers. ((number, i) => i !== 3); console. (nextNumbers); // [-3, -2, -1, 1, 2, 3]
filter 함수에 넣는 인자 함수에서 두 번째 파라미터로 항목의 index를 받아올 수 있습니다. 만약 이 값이 불필요하다면 생략해도 되지만 필요할 때는 이렇게 두 번째 파라미터로 조회하면 됩니다. 또한, 화살표 함수를 작성할 경우 파라미터가 하나뿐일 때는 괄호를 생략해도 되지만 두 개 이상일 때는 괄호가 반드시 있어야 합니다.
이번에는 여러 객체로 이루어진 배열을 다룰 때 어떻게 해야 하는지 알아봅시다.
const items = [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }];
이 배열에서 id 값이 3인 객체를 지우고 싶다고 가정해봅시다. 기존에 작업한 것과 별 다를 것이 없습니다.
const items = [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }]; const nextItems = items. (item => item.id !== 3); console. (nextItems); // [{ id: 1 }, { id: 2 }, { id: 4 }]