자바스크립트에서 배열에 담긴 여러 객체 중 특정 조건에 맞지 않는 객체를 제거하고 싶다면 filter() 메서드를 활용하면 됩니다. filter()는 콜백 함수의 반환값이 true인 요소만 모아 새로운 배열을 생성하기 때문에, 원본 배열은 그대로 유지된다는 장점이 있습니다.
예를 들어 다음과 같이 세 개의 객체가 담긴 배열이 있다고 가정해 보겠습니다. 이 중 세 번째 객체에는 details 속성이 없습니다.
ObjectValue = [
{ "id": "101", "details": { Name: "John", subjectName: "JavaScript" } },
{ "id": "102", "details": { Name: "David", subjectName: "MongoDB" } },
{ "id": "103" }
]
filter()로 객체 제거하기
details 속성이 존재하지 않는 객체를 걸러내려면 아래와 같이 코드를 작성합니다.
ObjectValue = [
{ "id": "101", "details": { Name: "John", subjectName: "JavaScript" } },
{ "id": "102", "details": { Name: "David", subjectName: "MongoDB" } },
{ "id": "103" }
]
output = ObjectValue.filter(obj => obj.details)
console.log(output)
filter()의 콜백 함수는 배열의 각 객체를 순회하면서 obj.details 값을 평가합니다. 이 값이 존재하는(truthy) 객체만 새 배열에 포함되고, details 속성이 없는 객체는 자동으로 제외됩니다.
프로그램 실행 방법
위 코드를 Node.js 환경에서 실행하려면 터미널에서 다음 명령어를 입력합니다. 파일 이름은 실제로 저장한 이름으로 지정하면 되며, 여기서는 demo46.js를 사용했습니다.
node fileName.js
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
PS C:\Users\Amit\JavaScript-code> node demo46.js
[
{ id: '101', details: { Name: 'John', subjectName: 'JavaScript' } },
{ id: '102', details: { Name: 'David', subjectName: 'MongoDB' } }
]
출력 결과를 보면 details 속성이 없던 id가 '103'인 객체는 제거되고, 해당 속성을 가진 두 객체만 새로운 배열에 담긴 것을 확인할 수 있습니다. 이처럼 filter()를 사용하면 조건에 맞는 데이터만 깔끔하게 추출할 수 있습니다.