개요
배열 안에서 특정 조건에 일치하는 항목을 찾아 새로운 값을 할당하려면 filter()와 map() 메서드를 함께 사용하면 됩니다. 이 두 메서드를 조합하면 별도의 반복문(for, while 등) 없이도 간결하고 가독성 높게 원하는 작업을 처리할 수 있습니다.
먼저 다음과 같은 학생 정보 배열이 있다고 가정해 보겠습니다.
const studentDetails = [
{Name: "John"},
{Name: "David"},
{Name: "Bob"},
{Name: "Mike"}
]
여기서 우리는 이름이 "Bob"인 항목을 찾아 "Carol"로 변경하고자 합니다.
예제
const studentDetails = [
{Name: "John"},
{Name: "David"},
{Name: "Bob"},
{Name: "Mike"}
]
var changeName = "Bob";
studentDetails.filter((obj) => obj.Name === changeName).map((obj) =>
obj.Name = "Carol");
console.log(studentDetails);
코드 설명:
filter((obj) => obj.Name === changeName): 배열을 순회하면서 Name 속성이 changeName("Bob")과 일치하는 객체만 골라냅니다..map((obj) => obj.Name = "Carol"): 필터링된 객체들의 Name 속성 값을 "Carol"로 변경합니다.
filter()와 map()은 모두 원본 배열의 객체에 대한 참조를 유지하기 때문에, map() 내부에서 객체의 속성을 수정하면 그 변경 사항이 원본 배열에도 그대로 반영됩니다.
프로그램 실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력하면 됩니다.
node fileName.js
여기서는 파일 이름이 demo98.js입니다.
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
PS C:\Users\Amit\JavaScript-code> node demo98.js
[
{ Name: 'John' },
{ Name: 'David' },
{ Name: 'Carol' },
{ Name: 'Mike' }
]
실행 결과를 보면 기존에 "Bob"이었던 세 번째 항목이 성공적으로 "Carol"로 변경된 것을 확인할 수 있습니다. 이처럼 filter()와 map()을 조합하면 반복문을 직접 작성하지 않고도 조건에 맞는 배열 항목의 값을 손쉽게 수정할 수 있습니다.