forEach / map / filter / reduce
cosnt arr = [10,11,12,13,14,15];
arr.forEach((item)=>{
console.log(item);
})
//위와 같은 for문의 개념
for(let i = 0; i < arr.length; i++){
console.log(arr[i]);
}
output
10
11
12
13
14
15
cosnt arr = [10,11,12,13,14,15];
const result = arr.map((item)=>{
return item % 2 === 0;
})
console.log("result: ",result);
//output
result: [ true, false, true, false, true, false ]
map에서 알아야할 핵심은 return하는 것은 배열이고 배열을 돌리는 배열의 length와 같은 length를 return한다는 것이 포인트이다.
map과 반대되는 개념이 filter이다.
cosnt arr = [10,11,12,13,14,15];
const result = arr.filter((item)=>{
return item % 2 === 0;
})
console.log("result: ",result);
//output
result: [ 10, 12, 14 ]
위의 output과 같이 내가 filter한 값만 배열에 return 되어 나온다.
-reduce
reduce는 배열을 return하는 개념이 아니라 값을 return 하는 개념이다.
즉,
arr.reduce((result,arrItem)=>{
//reduce함수 끝부분에 0을 넣어줬다 이것은 x의 초기값과 같다.
//result = 0;
//arrItem의 첫번째 값에는 arr배열의 첫번재 값이 들어온다.
return result+arrItem;
//return을 한번 하고나면 이제 result의 값은 0 + 10이 되어서
//result = 10이고
//arrItem = 배열의 두번째 값인 11이온다.
//return result + arrItem = 21이되고 result는 21을 인자로 받고 arrItem는 12를 받는 방식이다.
},0);
reduce는 알고리즘에서 주로 배열들의 sum할때 많이 사용하고 큰값을 찾는것등도 할순 있지만 이럴때는 Math.max(...arr);와 같은것을 사용한다!