Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 항해99추천
- 날씨 api
- 부트캠프항해
- 배열 메소드
- server component
- greedy
- 로딩 후 실행
- 서버 컴포넌트
- 자바스크립트
- 동전 0
- 항해99솔직후기
- 숫자를 별점으로
- 프로그래머스
- 중복카테고리
- 그리디
- 탐욕알고리즘
- db수정
- jQuery
- NextJS v13
- react
- 항해99후기
- 배열 중복 제거
- 카테고리필터
- 실전프로젝트
- 중복선택
- JavaScript
- 알고리즘
- 백준
- 항해99
- 클라이언트 컴포넌트
Archives
- Today
- Total
공부 및 일상기록
[Javascript] map, forEach, reduce에 대하여 본문
Array.prototype.forEach
forEach() 메서드는 배열에 활용이 가능한 메서드로, 파라미터로 주어진 함수를 배열 요소 각각에 대해 실행하는 메서드 이다. map() 메서드와 거의 비슷하지만 차이점은 따로 return하는 값이 없다는 점이다.
const arr = [1, 2, 3, 4, 5];
const newArr = arr.forEach((요소, index, array) => {
console.log(`요소: ${요소}`);
console.log(`index: ${index}`);
console.log(array);
});
console.log(newArr);
//결과
요소: 1
index: 0
[ 1, 2, 3, 4, 5 ]
요소: 2
index: 1
[ 1, 2, 3, 4, 5 ]
요소: 3
index: 2
[ 1, 2, 3, 4, 5 ]
요소: 4
index: 3
[ 1, 2, 3, 4, 5 ]
요소: 5
index: 4
[ 1, 2, 3, 4, 5 ]
undefined
위의 결과처럼 forEach의 첫번째 인자로는 각 요소, 두번째 인자로는 인덱스번호, 세번째 인자로는 해당 배열이 들어있다.
map메서드와 차이는 따로 콜백함수가 return하는 값을 모아서 처리하는 과정이 없기 때문에, 메서드를 호출한 코드를 함수에 할당하면 undefined가 나온다.
Array.prototype.map
map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다.
const arr = [1, 2, 3, 4, 5];
let newArr = arr.map((요소, index) => {
console.log("요소는 : ", 요소);
console.log("인덱스번호는 : ", index);
return 요소;
});
//결과
요소는 : 1
인덱스번호는 : 0
요소는 : 2
인덱스번호는 : 1
요소는 : 3
인덱스번호는 : 2
요소는 : 4
인덱스번호는 : 3
요소는 : 5
인덱스번호는 : 4
map()의 기본 원리는 반복문을 돌며 배열 안의 요소들을 1:1로 짝지어 주는 것이다. 콜백함수의 첫번째 인자로는 요소가, 두번째 인자로는 인덱스번호가 들어가게 된다. 여기서 중요한 점은 newArr은 arr과 전혀 다른 객체 라는 것이다.
map은 기존 배열을 수정하지 않고 새로운 배열을 만들어 낸다. 하지만 배열 내에 객체가 있는 경우, 그 객체는 공유된다.
Array.prototype.reduce
reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서 함수를 실행하고, 하나의 결과값을 반환한다.
reduce() 메서드는 4가지의 인수를 가진다.
- accumulator : callback 함수의 반환값을 누적한다.
- currentValue : 배열의 현재 요소
- index(optional) : 배열의 현재 요소의 인덱스
- array(optional) : 호출한 배열
callback함수의 반환값은 accumulator에 할당하고 순회중 계속 누적되어 최종적으로 하나의 값을 반환한다.
const arr = [1, 2, 3, 4, 5];
// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const newArr = arr.reduce(
(accumulator, currentValue) => accumulator + currentValue,
initialValue
);
console.log(newArr); //15
'개발 > Javascript' 카테고리의 다른 글
[Javascript] 자바스크립트 클래스 (0) | 2023.01.17 |
---|---|
[Javascript] 자바스크립트 메모리 관리 (0) | 2023.01.17 |
[Javascript] 자바스크립트에서 데이터 형변환 (0) | 2023.01.16 |
[Javascript] 불변성을 유지하는 방법 (0) | 2023.01.16 |
[Javascript] 프로토타입이란 무엇인가? (0) | 2023.01.16 |