Learning JavaScript : chapter 8 배열 sort함수(예제 오류)

GGAGURI·2021년 2월 24일
0

자바스크립트에서 배열을 정렬할 때 sort 내장함수를 사용한다.

const arr[5, 4, 3, 2, 1];
arr.sort();	// arr는 [1, 2, 3, 4, 5];

일반적으로는 객체가 들어있는 배열을 정렬할 수 없지만, sort()는 정렬함수를 받을 수 있다.

const arr = [{ name: "Suzanne"}, { name: "Jim"},
	{ name: "Trevor" }, { name: "Amanda"}];
arr.sort();		// arr은 바뀌지 않는다.
arr.sort((a, b) => a.name > b.name); // 바뀌지 않는다...?

허나, 예제에서 주어진 대로 arr.sort((a, b) => a.name > b.name); 를 수행하면 정렬이 되지 않았다.

이유를 찾아보니 compareFunction, 즉 위의 익명함수를 제공할 때 함수의 반환값에 따라 정렬이 되는데 반환값이 주어지지 않아 정렬이 수행되지 않은 것이다.

compare 함수는 아래와 같은 형식이어야 한다.

function compare(a, b) {
  if (a < b) {
    return -1;
  }
  if (a > b) {
    return 1;
  }
  // a must be equal to b
  return 0;
}

참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

profile
주니어 개발자

0개의 댓글