Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript filter()로 빈 값이 섞인 ID 목록에서 특정 ID 레코드 추출하기

데이터를 다루다 보면 id 값이 숫자, 빈 문자열(""), null 등 다양한 형태로 섞여 있는 배열에서 특정 ID에 해당하는 레코드만 골라내야 하는 경우가 자주 있습니다. 이럴 때 JavaScript의 filter() 메서드를 활용하면 간단하고 깔끔하게 해결할 수 있습니다.

예제 데이터

다음과 같이 id 값이 비어 있거나 null인 항목이 포함된 객체 배열이 있다고 가정해 보겠습니다.

var details=[
    {id:101,name:"John",age:21},
    {id:111,name:"David",age:24},
    {id:1,name:"Mike",age:22},
    {id:"",name:"Sam",age:20},
    {id: 1,name:"Carol",age:23},
    {id:null,name:"Robert",age:25},
    {id:1,name:"Adam",age:24},
    {id:"",name:"Chris",age:23}
];

filter() 메서드 활용하기

배열의 filter() 메서드는 콜백 함수가 true를 반환하는 요소만 모아 새로운 배열을 생성합니다. 따라서 obj.id === 1이라는 조건을 사용하면 id가 정확히 1인 레코드만 추출할 수 있습니다. 특히 일치 연산자(===)를 사용하면 타입 변환 없이 엄격하게 비교되기 때문에, 빈 문자열이나 null 같은 값은 자동으로 걸러집니다.

예제 코드

var details=[
    {id:101,name:"John",age:21},
    {id:111,name:"David",age:24},
    {id:1,name:"Mike",age:22},
    {id:"",name:"Sam",age:20},
    {id: 1,name:"Carol",age:23},
    {id:null,name:"Robert",age:25},
    {id:1,name:"Adam",age:24},
    {id:"",name:"Chris",age:23}
];
var getIdWithValue1 = details.filter(obj => obj.id === 1);
console.log(getIdWithValue1);

위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력합니다. 여기서는 파일 이름을 demo181.js로 가정합니다.

node fileName.js

실행 결과

코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

PS C:\Users\Amit\javascript-code> node demo181.js
[
    { id: 1, name: 'Mike', age: 22 },
    { id: 1, name: 'Carol', age: 23 },
    { id: 1, name: 'Adam', age: 24 }
]

결과를 보면 원본 배열에서 id가 1인 세 개의 객체(Mike, Carol, Adam)만 새 배열에 담겨 반환된 것을 알 수 있습니다. 빈 문자열("")이나 null을 가진 항목은 조건을 만족하지 않으므로 자연스럽게 제외됩니다. 이처럼 filter()를 사용하면 지저분한 데이터가 섞여 있어도 원하는 조건의 레코드만 안전하게 추출할 수 있습니다.