ABOUT ME

Today
Yesterday
Total
  • 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의 뒤(오른쪽)으로 이동한다.

     

     

    그래서 버블정렬으로 큰값이 오른쪽으로 밀려나는 오름차순정렬이 완성된다.

     

    반면 returnb - 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의 대상인 배열 전체를 가르킨다.

     

    이런 비밀도 있었다.

Designed by Tistory.