Digking's cave

JS 기초 ) Array (배열메소드) 2 - sort / reduce 본문

기초/JavaScript

JS 기초 ) Array (배열메소드) 2 - sort / reduce

디깅 2022. 8. 3. 11:30
728x90

arr.sort()

배열 재정렬

배열 자체가 변경되므로 주의해야한다.

let arr = [1,5,4,2,3];
arr.sort();

console.log(arr); // [1,2,3,4,5]

let arr2 = ["a","c", "e" ,"b", "d"]
arr2.sort();

console.log(arr2); // ["a","b", "c", "d", "e" ]

let arr3 = [27, 8 , 5 , 13]
arr.sort();
// [13,27,5,8] 문자로 인식하기 때문에 십의자리 1,2를 기준으로 정렬한 것
// 따라서 인수로 정렬 로직을 담은 함수를 받아서 처리
arr.sort((a,b) => {
    console.log(a,b);
    return a-b;
});

편리하게 Lodash 라이브러리를 활용할 수 있다.

_.sortBy(arr) : 숫자/문자에 상관없이 원하는 기준으로 정렬해준다

 

arr.reduce() 

(누적 계산값, 현재값) => {retrun 계산값}

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

let result = 0;
arr.forEach(num => {
    result += num;
});

//기존의 이 작업을 한번에 해주는게 reduce

const result = arr.reduce((prev, cur) => {
    retrun prev + cur;
},0);

예시)

let userList = [
    {name: "Mike" , age: 30 },
    {name: "Tom" , age: 10 },
    {name: "Jane" , age: 27 },
    {name: "Sue" , age: 26 },
    {name: "Harry" , age: 45 },
    {name: "Steve" , age:60 },
];

// 성인만 구하기
let result = userList.reduce((prev, cur) => {
    if(cur.age > 19){
    	prev.push(cur.name);
     }
    return prev;
},[]);

console.log(result);

// 모든 나이 더하기
let resultage = userList.reduce((prev, cur) => {
    return (prev += cur.age);
},0);

console.log(resultage);

// 3글자인 이름만 구하기

let resultname3 = userList.reduce((prev, cur) =>{
	if(cur.name.length === 3){
        prev.push(cur.name);
    };
    return prev
},[]);

console.log(resultname3);
728x90

 

 

 

 

 

 

 

 

참고 ; https://www.youtube.com/watch?v=4_WLS9Lj6n4&t=3158s

반응형