본문 바로가기
Web/JAVASCRIPT

Array에 자주 쓰는 sort, map, filter

by print_soo 2023. 8. 1.

Array 정렬 (sort)

 

[오름차순]

var num = [7,3,5,2,40];
num.sort(function(a, b){
  return a - b
});

console.log(num); //[2,3,5,7,40]

 

[동작원리]

1. 변수의 매개변수 a와 b는 num 배열의 요소를 처음부터 하나씩 읽어낸다. (a: 7 b: 3 / a: 3 b: 5  / a: 5 b: 2  ...)
2. return 옆에 쓰여진 수식의 결과로 a와 b 중 어느 것을 뒤에 보낼지를 결정한다.
3. return 옆에 쓰여진 수식의 결과가 양수라면 a를 b 보다 뒤로 보낸다.
4. return 옆에 쓰여진 수식의 결과가 음수라면 b를 a 보다 뒤로 보낸다.

 

 

위의 원리를 응용하면 내림차순은 아래와 같이 응용할 수 있다.

 

[내림차순]

var num = [7,3,5,2,40];
num.sort(function(a, b){
  return b - a
});

console.log(num); //[40,7,5,3,2]

 

[문자의 오름차순]

 

var engArray = ['e', 'b', 'c', 'a'];

engArray.sort(function (a, b) {
    if(a.title > b.title) return 1;
    if (a.title < b.title) return -1;
    if (a.title === b.title) return 0;
});

console.log(engArray); // ['a', 'b', 'c', 'e']

 

[문자의 내림차순]

var engArray = ['e', 'b', 'c', 'a'];

engArray.sort(function (a, b) {
    if(a.title < b.title) return 1;
    if (a.title > b.title) return -1;
    if (a.title === b.title) return 0;
});

console.log(engArray); // ['e', 'c', 'b', 'a']

 

원하는 자료만 필터링하는 함수 filter

 

var num = [7,3,5,2,40];
var new = num.filter(function(a, b){
  return a < 4
});

console.log(num); //[2, 3]

 

filter 함수는 sort함수와는 다르게 원본을 건드리지 않기 때문에 원본 배열은 변하지 않는다. 따라서 새로운 배열을 만들어서 변경된 배열을 저장해 사용해야한다.

 

 

배열 내부 데이터를 전부 변형하는 함수 map

 

var num = [7,3,5,2,40];
var new = num.map(function(a){
  return a * 2
});

console.log(num); //[14,6,10,4,80]

map 함수는 sort함수와는 다르게 원본을 건드리지 않기 때문에 원본 배열은 변하지 않는다. 따라서 새로운 배열을 만들어서 변경된 배열을 저장해 사용해야한다.

'Web > JAVASCRIPT' 카테고리의 다른 글

HTML추가 후 이벤트가 작동이 안될 때  (0) 2023.08.03
LocalStorage  (0) 2023.08.03
Ajax 활용(코딩애플 URL 활용)  (0) 2023.08.01
Ajax  (0) 2023.07.31
arrow function 문법  (0) 2023.07.31