-
sort, filter, map, reduce 등 함수 정리자바스크립트 2021. 12. 22. 00:03
sort는 배열의 순서를 요청에따라 변화시킨다.
옛날에 만들어진 함수라 배열 자체의 데이터를 변화시킨다.
sampleArray.sort(); 는 기본적인 형태로서 a, b, c 와 가, 나, 다 이런 순서로 정렬한다.
즉, 디폴트 기능이 text의 순서를 비교한다는것이다.
그래서 숫자를 넣으면 1, 1000, 2, 500 이런식으로 숫자의 값이 아닌 1~9 까지의 순서만으로 분류한다.
그래서 number형의 크거나 작은 순서로 정렬하려면..
sampleArray.sort(function(a, b) {
return a - b;
});
요런식으로 해야한다. 저래서 return값이 음수라면 a가 b보다 작다는 뜻이므로,
a와 b의 위치는 변하지않는다.
하지만 a - b가 양수가 나와서 a가 더 큰 값이라는게 밝혀진다면,
a는 b의 뒤(오른쪽)으로 이동한다.
그래서 버블정렬으로 큰값이 오른쪽으로 밀려나는 오름차순정렬이 완성된다.
반면 return이 b - a; 라면 반대의 형태로 내림차순 정렬이 완성된다.
그렇다면 filter 함수는...
const newArray = sampleArray.filter(function(a) {
return a > variable;
});
형식으로 파라미터 a에 sampleArray값을 하나씩 대입해 집어넣는다.
return값이 true면 a는 newArray에 넘어가고 false면 newArray에 넘어가지않는다.
이 함수는 최신 함수이므로 새로운 변수에 할당해주는 형식으로 사용해야한다.
map은 forEach랑 비슷한데, 배열안의 값에 하나씩 같은 작업을 해준다.
차이점은 map은 filter처럼 새로운 변수에 할당을 해 새로운 배열을 만들어내지만 forEach는 그렇지않다.
forEach은 기존 배열 변수를 변화시키지만 map은 그렇지않는다는 뜻이다.
const arr = [1, 2, 3, 4, 5];
const newArr = arr.map(a => { return a * 2 });
이렇게 map에는 return을 써주면 된다.
또 forEach는 사진처럼
콜백함수가 배열의 각 요소로 들어오는 첫번째 인자(a)만 받을 수 있는게 아니라
인자를 세 개 까지 받을 수 있는데,
두 번 째 i는 index로 배열의 순서를 나타내고 forEach의 대상인 배열 전체를 가르킨다.
이런 비밀도 있었다.
'자바스크립트' 카테고리의 다른 글
화살표 함수 사용법. (0) 2021.12.27 spread operator는 무엇인가. (0) 2021.12.26 간단한 호이스팅 문제. (0) 2021.12.26 변수 선언 방식에 따른 호이스팅의 차이, 호이스팅이란? (0) 2021.12.26 querySelectorAll 와 getElementsByClassName의 차이 (0) 2021.12.22