프로그래밍/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와 기능은 동일, 배열 우측부터 연산 시작

반응형