프로그래밍/Javascript
자바스크립트 중급 8- 배열 메소드2(sort, reduce)
mimi04
2023. 6. 13. 19:16
1. arr.sort()
//arr.sort()
//배열 재정렬
//배열 자체가 변경되어 주의해야 함.
//인수로 정렬 로직을 담은 함수를 받음.
let arr = [1, 5, 3, 4, 2];
arr.sort();
console.log(arr); //[1, 2, 3, 4, 5]
let arr = ['a', 'c', 'd', 'e', 'b'];
arr.sort();
console.log(arr); //["a","b","c","d","e"]
let arr = [27, 8, 5, 13];
arr.sort();
console.log(arr); //[13,27,5,8]
→arr.sort()는 배열을 문자열로 받아들여 앞자리 수가 적은 13, 다음 27 순으로 배열됨. 따라서 함수를 넣어줘야 함.
let arr = [27, 8, 5, 13];
arr.sort((a,b) =>{
return a - b; //a와 b를 비교하여 더 작은 수를 앞으로 반환. 0일 경우는 반환하지 않음.
});
console.log(arr); //[5,8,13,27]
→ 복잡하기 때문에 'Lodash'를 사용해준다. (https://lodash.com)
→ _.sortBy(arr);
2. arr.reduce()
//arr.reduce()
//인수를 함수로 받음
//(누적 계산값, 현재값) => {return 계산값};
//배열의 모든수 합치기
let arr = [1, 2, 3, 4, 5];
//for, for of, forEach
let result = 0;
arr.forEach((num) => {
result += num;
})
console.log(result);
→ reduce로 구하기
//arr.reduce()
//인수를 함수로 받음
//(누적 계산값, 현재값) => {return 계산값};
//배열의 모든수 합치기
let arr = [1, 2, 3, 4, 5];
//for, for of, forEach
const result = arr.reduce((prev, cur)=>{ //prev:이전값=현재까지 누적 계산값, cur:현재값
return prev + cur;
}, 0) //초기값:0
console.log(result);
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){
prev.push(cur.name);
}
return prev;
}, [])
console.log(result);
//나이의 합 구하기
let result = userList.reduce((prev, cur)=>{
return (prev += cur.age);
}, 0)
console.log(result);
//이름이 세글자인 사람 이름 반환
let result = userList.reduce((prev, cur)=>{
if(cur.name.length === 3){
prev.push(cur.name);
}
return prev;
}, []);
console.log(result);
*arr.reduceRight(); →reduce와 기능은 동일, 배열 우측부터 연산 시작
반응형