인자로 함수를 받거나 (콜백함수), 함수를 반환하는 함수를 고차 함수(Higher order function)라 부른다.
배열에는 대표적으로 forEach, filter, map , reduce.. 등 제대로 알고 쓰면 유용한 고차함수가 많이있다.
자주 쓰이는 고차함수의 인자, 반환값에 대해 알아보고자 한다.
const array = [1, 2, 3, 4, 5, 6];
array.forEach((num) => console.log(num)); // 1~6까지 차례대로 출력
// forEach는 반환값이 undefined.
const each = array.forEach((num) => console.log(num));
console.log(each); // undefined
// 주어진 배열 안의 '찌개'를 '국'으로 교체한다고 할 때.
const array = ["밥", "찌개", "피자", "감자", "찌개", "고기", "찌개"];
const replace = array.map((food) => (food === "찌개" ? "국" : "찌개"));
console.log(repalce); // ['찌개', '국', '찌개', '찌개', '국', '찌개', '국']
// 주어진 배열에 특정 요소가 몇개 있는지 카운트하기
// 메시는 몇 번 있을까?
const array = ["호날두", "메시", "손흥민", "메시", "홀란드", "살라"];
const count = array.filter((player) => player === "메시");
console.log(count); // 2
// 5보다 큰 숫자들의 평균
const array = [4, 55, 2, 6, 4, 8, 9];
const avg = array
.filter((num) => num > 5)
.reduce((avg, num, _, arr) => avg + num / arr.length, 0);
console.log(avg); // 19.5
// 요소가 숫자일 경우, 문자열 형태로 변환되었다가 정렬되기 때문에 10이 먼저 오게됨.
const numbers = [0, 5, 4, 2, 1, 10];
numbers.sort();
console.log(numbers); // [0, 1, 10, 2, 4, 5]
numbers.sort((a, b) => a - b);
// < 0 a가 작다는 의미이기 때문에 a가 앞으로 정렬, 오름차순
// > 0 b가 작다는 의미이기 때문에 b가 앞으로 정렬, 내림차순