배열에 사용되는 함수,
map()과 filter() 에 대하여 알아보겠습니다.
map()과 filter() 에 대하여 알아보겠습니다.
map() 메서드
- map() 메서드는 배열 내의 모든 요소를 돌면서 주어진 함수의 결과를 모아 새로운 배열을 리턴합니다.
- 결과를 "return ..." 리턴 값으로 추출합니다.
- 단, 실행문이 한 개만 반환될 경우, return 키워드와 {} 를 생략할 수 있습니다.
예시
cosnt a = numbers.map(number => {
return number < 3
})
//아래로 리팩토링(간결한 코드)
const a = numbers.map(number => number < 3)
map 함수 구문
array.map(callbackFunction(current value, index, array), thisArg)
- currentValue : 배열 내 현재 값
- index : 배열 내 현재 값의 인덱스
- array : 현재 배열
- thisArg : callbackFunction 내에서 this로 사용될 값
map() 예제: string
let arr1 = [ "월요일", "화요일", "수요일", "목요일", "금요일" ]
let map1 = arr1.map( item => '출근하는 '+ item );
console.log(map1);
결과: (5) ["출근하는 월요일", "출근하는 화요일", "출근하는 수요일", "출근하는 목요일", "출근하는 금요일"]
map() 예제: number
let arr2 = [ 1,3,5,7,9 ]
let map2 = arr2.map( item => item * 2 );
console.log(map2);
결과: (5) [2, 6, 10, 14, 18]
map 함수를 이용하여 원하는 객체 값 추출
let fruit = [
{color: "yellow", name:"banana"},
{color: "red", name:"tomato"},
{color: "orange", name:"orange"},
{color: "green", name:"grape"},
{color: "red", name:"apple"}
]
let fruitColor = fruit.map((item) => item.color);
console.log(fruitColor);
결과: (5) ["yellow", "red", "orange", "green", "red"]
-> 내가 원하는 과일의 컬러만 추출하여 새로운 배열을 리턴하였습니다.
map 함수를 이용하여 객체 데이터 추출
map을 이용하여 배열 데이터를 가지고, 객체 데이터로 새롭게 만들 수 있습니다.
const colors = ["yellow", "red", "orange", "green", "red"]
const a = colors.map((color, index) => {
return {
id: index,
name: color
}
})
console.log(a);
//결과:
(5) [{…}, {…}, {…}, {…}, {…}]
0: {id: 0, name: "yellow"}
1: {id: 1, name: "red"}
2: {id: 2, name: "orange"}
3: {id: 3, name: "green"}
4: {id: 4, name: "red"}
화살표 함수 형식
특정한 실행문이 한 개만 반환될 경우, return 키워드와 {} 를 생략할 수 있습니다.
소가로()로 한번 중가로{}를 감싸 주어야 객체 데이터가 화살표 문법에 의해서 반환됩니다.
const colors = ["yellow", "red", "orange", "green", "red"]
const a = colors.map((color, index) => ({
id: index,
name: color
})
filter() 메서드
filter() 메서드는 배열 내의 모든 요소를 돌면서
주어진 함수의 조건에 맞는 요소만을 모아 새로운 배열을 리턴합니다.
filter 함수 구문
let newArray = arr.filter(callback(currentValue[, index, [array]]) {
// return element for newArray, if true
}[, thisArg]);
filter() 예제1
let fruits = ['kiwi', 'banana', 'apple', 'peach', 'pineapple', 'strawberry', 'watermelon'];
let result = fruits.filter( item => item.length>6);
console.log(result);
결과:(3) ["pineapple", "strawberry", "watermelon"]
실무에서 자주 사용하는 filter 함수를 이용하여 검색 조건에 따른 필터링하기
let fruits = ['kiwi', 'banana', 'apple', 'peach', 'pineapple', 'strawberry', 'watermelon'];
let search = (query) => {
return fruits.filter((item)=>
item.toLowerCase().includes(query.toLowerCase()));
}
console.log(search('ea'));
결과: (2) ["peach", "pineapple"]
반응형
'개발 > Javascript' 카테고리의 다른 글
[js] 자바스크립트로 검색 기능 구현하기 (9) | 2020.12.07 |
---|---|
[js] fetch로 Ajax 통신 사용법(ft. json placeholder데이터 출력) (2) | 2020.12.06 |
[js/jQuery] input 값의 데이터를 ajax json 형식으로 전송 (ft. 이벤트페이지 ) (0) | 2020.10.19 |
[js] 클릭 이벤트 후 이미지 변경, 컬러 변경, 팝업창 오픈 (0) | 2020.10.15 |
[js] 자바스크립트 모달창(팝업창) 구현 (0) | 2020.10.11 |
댓글