자바스크립트 중급 강좌 (배열매서드-2)

히대·2023년 12월 14일

Javascript

목록 보기
18/28

sort() : 배열 재정렬

배열 자체가 변경되니 주의!

let arr = [1,5,4,2,3];
let arr2 = ['a','c','d','e','b'];

arr.sort();
arr2.sort();

console.log(arr) -> [1,2,3,4,5];
console.log(arr2) -> ['a','b','c','d','e'];

sort는 배열안에 숫자를 문자로 인식함
그래서 이런 오류가 있음

let arr = [27, 8, 5 ,13;

arr.sort();
console.log(arr) -> [13, 27, 5, 8] 문자로 취급하기 때문에 앞에 문자만을 보고 배열을 정렬해줌

해결법

arr.sort((a,b){
	return a - b; -> a와 b를 비교하여 
    				 a가 작으면 a를 앞으로 보냄
                     a가 크면 b를 앞으로 보냄
});
console.log(arr) -> [5,8,13,27]

console.log(a,b)만 출력하면

각각비교하여 이렇게 출력됨

어려워서 Lodash 라이브러리 사용한다고 함

_.sortBy(arr); 문자던 숫자던 정렬해줌

reduce() : 배열을 돌면서 원하는 자겁을 하고 최종값을 반환

let arr = [1,2,3,4,5]

let result = arr.reduce((prev, cur)=>{  *prev = 누적된 값 cur = 현재 값
	return prev + cur;
}, 0) *0은 초기값 설정 안하면 첫번째 값이 적용됨
let userList = [
	{ name : 'mike', age : 30},
    { name : 'tom', age : 10},
	{ name : 'jane', age : 27},
	{ name : 'sue', age : 26},
	{ name : 'harry', age : 42},
	{ name : 'steve', age : 60},
];

let result = userList.reduce((prev, cur)=>{
	if(cur.age > 19){ *현재값의 age가 19보다 크다면
    prev.push(cur.name) *지금까지 누산된 값에 현재값의 name을 추가
    }
    return prev;  
},[]) * 초기값은 빈 배열

console.log(result) -> ['mike','jane','sue','harry','steve'];
profile
아자아자 파이팅🔥

0개의 댓글