map과 filter의 기본
현업에서
map
,filter
가 정말 많이 쓰인데요!
함께 공부하는 동기가 해준 말이다.
그 동안 메서드에 대해 잘 몰랐고, 익숙해지지 않았다.
하필 내가 가장 어려워하는 메서드가 현업에서는 많이 쓰인다느 사실을 알게 됐을 땐,
솔직히 막막하기도 했다.
그렇다면 오늘은 해당 메서드의 개념만큼은 확실하게 끝내고 가야겠다.
map
Mdn에 map
을 검색해보니 기본적인 사용법을 볼 수 있었다.
정의는 다음과 같다.
map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다. 이때, 원본 배열은 변경되지 않습니다.
- <모던 자바스크립트>
아래는 map을 활용한 간단한 예시다.
각 요소를 들고와서 인자로 받은 함수를 차례로 실행시켜 새로운 배열을 반환하고 있다.
let num = [1, 4, 9];
let example1 = num.map(x => Math.sqrt(x))
console.log(num)
console.log(example1)
VM544:1 (3) [1, 4, 9]
VM544:2 (3) [1, 2, 3]
forEach와 모든 배열을 순회하면서 콜백 함수를 반복한다는 공통점이 있지만
map은 새로운 배열을 만들어 반화하는 차이가 있다.
map 메서드의 인자를 뜯어보면,
요소값
,인덱스
,this
를 전달받는다.
예를 들어
[1,2,3].map((item, index, arr) => {
console.log(`요소값: ${item}, 인덱스 ${index}, this: ${JSON.stringify(arr)}`)
});
이런식으로 인자를 전달할 수 있다.
활용
배열 뿐만 아니라, 객체에도 접근 가능하다.
let students = [
{id:1, name:"james"},
{id:2, name:"tim"},
{id:3, name:"john"},
{id:4, name:"brian"}
];
let names = students.map(student =>student.name);
console.log(names);
객체에 접근하는 방법에 따라 다른 결과값을 접할 수 있다.
다차원 배열의 접근
map을 활용해 다차원 배열에 있는 모든 요소에 2를 더해보자!
let numbers = [[1,2,3],[4,5,6],[7,8,9]];
맵을 통해 각 배열을 뜯고, 해당 배열에 다시 한번 더 접근할 수 있게 됐다!
filter
다음은 filter
다.
map
과 비슷하게 모든 요소를 순회하면서 콜백 함수를 반복 호출한다.
그리고 콜백 함수의 반환값이true
인 요소로만 구성된 새로운 배열을 반환한다
filter
는 map
과 비슷하게 모든 요소를 순회하지만
true인 것을 판별해 새로운 배열을 형성한다.
let num = [1,2,3,4,5];
let odds = num.filter(x => x % 2);
console.log(odds) // [1, 3, 5] (1)은 true로 평가된다. 0은 false
filter
메서드가 생성한 새로운 배열의 길이는 언제나 filter
를 호출한 배열의 길이값과 같거나 작다!
걸러지기 때문에,,!
Author And Source
이 문제에 관하여(map과 filter의 기본), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@willy4202/map과-filter저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)