자바스크립트 고차함수와 메서드

citron03·2022년 1월 8일
0

html, css, js

목록 보기
8/43
  • 자바스크립트에서 일급객체는 변수에 할당이 가능하며 다른 함수의 인자로 전달이 가능하고, 다른 함수의 결과로 리턴이 가능하다.
  • 고차함수는 함수를 인자로 받을 수 있고(콜백함수), 함수의 형태로 리턴할 수 있는(커리함수) 함수를 의미한다.
  • 자바스크립트의 내장 고차함수로는 map, filter, reduce 등이 있다.

map

배열을 또 다른 배열로 만들어 준다.
인자로 받은 함수를 통해서 배열의 원소 값을 변환한다.
입력받은 배열의 크기와 같은 크기의 배열을 반환한다.

const list = [1, 2, 3, 4, 5];
map_list = list.map(num => num * 2);
console.log(map_list);
// [ 2, 4, 6, 8, 10 ]

filter

인자로 받은 함수가 모든 배열(or 객체)의 원소를 검사하여 true를 반환하는 배열의 원소만으로 이루어진 배열을 반환한다.

const list = [1, 2, 3, 4, 5, 6, 7, 8];
filter_list = list.filter(num => num > 5);
console.log(filter_list);
// [ 6, 7, 8 ]

reduce

배열, 객체를 하나의 값으로 만든다.
초기값을 정하지 않으면, 배열의 첫번째 요소가 초기값이 된다.

const list = [1, 2, 3, 4, 5, 6, 7, 8];
reduce_list = list.reduce((acc, cur) => acc < cur ? cur : acc);
console.log(reduce_list);
// 8

기타 유용한 메서드

  • Array.isArray(array);
    배열이 맞다면 true, 아니면 false
  • arr1.concat(arr2);
    두 개의 배열을 합친 것을 반환한다.
  • JSON.stringify(array);
    배열을 문자로 바꾸어 변환한다. 이후 두 배열의 원소가 모두 동일한지 판별하는데 쓸 수 있다.
  • arr.flat();
    중첩배열을 평탄화한다.
    인자로 들어가는 숫자로 몇개의 중첩배열을 평탄화할지 정할 수 있다.
    인자로 Infinity를 넣어 어떤 중첩배열이라도 하나의 배열로 평탄화 할 수 있다.
const list = [1, 2, [1, 2, [1, 2, [1, 2]]]];
console.log(list.flat(2));
// [ 1, 2, 1, 2, 1, 2, [ 1, 2 ] ]

🍘 메서드 체이닝

  • 여러가지 메소드를 연속적으로 사용하여 한줄로 표현해 결과 도출한다.
const list = [1, 2, 3, 4, 5, 6, 7, 8];
result = list.map(num => num**2)
              .filter(num => num % 2 == 0)
              .reduce((acc, cur) => acc + cur);
console.log(result);
// 1, 4, 9, 16, 25, 36, 49, 64 -> 4, 16, 36, 64 -> 120
profile
🙌🙌🙌🙌

0개의 댓글