[JS] 배열 methods (2)

nana·2023년 1월 14일
0

🟡 JavaScript

목록 보기
21/23
post-thumbnail

🖍️ Array methods

💟 arr.sort ( ) : 배열 재정렬

  • ❗️ 배열 자체가 변경되니 주의
  • 인수로 정렬 로직을 담은 함수를 받음
📍 숫자
let arr = [1, 5, 4, 2, 3];
arr.sort();

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

----------------------------------------------

📍 알파벳
let arr = ["c", "b", "a", "d", "e"];
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]  
// 13과 27의 앞 숫자만 판단하여 정렬

❗️ 해결 방법 →
let arr = [27, 8, 5, 13];

// function fn(a, b) {
//   return a - b;
// }
// arr.sort(fn);

arr.sort((a, b) => {  // 두 요소를 전달하고
  return a - b; 
  // 두 인수를 비교해 0인지 양수인지 음수인지 알려줌
  // a가 크면 양수, 같으면 0, a가 b보다 작으면 음수 return 
  // 내부 로직 : a 와 b를 비교해서  a가 작으면 a를 앞으로 
  // 0 으로 반환되면 가만히 있고, a가 크면 b를 앞으로 보냄
});

console.log(arr);

📎 Lodash : ( 라이브러리 ) 사용하면 _.sortBy(arr); 로 가능, 숫자 / 문자 / 객체 원하는 기준으로 정렬해줌

💟 arr.reduce ( )

  • 인수로 함수를 받음
  • (누적 계산값, 현재값) => { return 계산값 };
// 배열 모든수 합치기
let arr = [1, 2, 3, 4, 5];

📍 forEach  // // for, for of, forEach
let result = 0;
arr.forEach( num => {
  result += num;
});

console.log(result);  // 15

-------------------------------------------
 
📍 arr.reduce ( )  
const result = arr.reduce ((prev, cur) => {
  return prev + cur;
}, 0);  // 옵션 : 초기값

console.log(result); // 15

-------------------------------------------
  
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: 18 },
];

let result = userList.reduce((prev, cur) => {
  if (cur.age > 19) {
    prev.push(cur.name);
  }
  return prev;
},[]);

console.log(result);  // (4) ['Mike', 'Jane', 'Sue', 'Harry']

📎 arr.reducerRight() : arr.reduce와 기능은 동일, 배열 우측부터 연산을 수행한다는 차이점 있음

profile
✧ 중요한건 꺾이지 않는 마음 🔥 ᕙ(•ө•)ᕤ 🔥

0개의 댓글