기초/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
반응형