Array.prototype.sort() 활용

boyeonJ·2023년 5월 7일
0

JavaScript ETC

목록 보기
6/14

오름차순 정렬

const numbers = [5, 2, 1, 4, 3];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 2, 3, 4, 5]

내림차순 정렬

const numbers = [5, 2, 1, 4, 3];
numbers.sort((a, b) => b - a);
console.log(numbers); // [5, 4, 3, 2, 1]

객체 배열의 속성 값으로 정렬

const students = [  { name: 'Alice', score: 80 },  { name: 'Bob', score: 90 },  { name: 'Charlie', score: 70 },];
students.sort((a, b) => b.score - a.score);
console.log(students);
// [//   { name: 'Bob', score: 90 },//   { name: 'Alice', score: 80 },//   { name: 'Charlie', score: 70 },// ]

객체 배열의 여러 속성으로 정렬

const students = [  { name: 'Alice', score: 80, grade: 'B' },  { name: 'Bob', score: 90, grade: 'A' },  { name: 'Charlie', score: 70, grade: 'C' },];
students.sort((a, b) => {
  if (a.grade < b.grade) return -1;
  if (a.grade > b.grade) return 1;
  return b.score - a.score;
});
console.log(students);
// [//   { name: 'Bob', score: 90, grade: 'A' },//   { name: 'Alice', score: 80, grade: 'B' },//   { name: 'Charlie', score: 70, grade: 'C' },// ]

객체 배열의 속성 값에 따라 정렬 방식 변경

const students = [  { name: 'Alice', score: 80, grade: 'B' },  { name: 'Bob', score: 90, grade: 'A' },  { name: 'Charlie', score: 70, grade: 'C' },];
const sortOptions = {
  score: (a, b) => b.score - a.score,
  grade: (a, b) => a.grade.localeCompare(b.grade),
};
students.sort((a, b) => {
  for (const [key, sortFn] of Object.entries(sortOptions)) {
    if (a[key] !== b[key]) {
      return sortFn(a, b);
    }
  }
  return 0;
});
console.log(students);

0개의 댓글