sort()
- sort()는 문자(String)인 숫자를 넣으면 유니코드 기준으로 정렬된다. 이 경우 가장 앞 문자인 "1"과 "2"를 비교하므로 "12"는 "2"보다 작다. 숫자로 비교하고 싶다면 숫자로 변환하여 비교한다.
- sort()의 괄호 안에 비교 방식을 구하는 함수를 넣어서 원하는 순서를 얻을 수 있다.
- 비교 방식을 구하는 함수에서 반환하는 값에 따라 - 0일 경우 비교하는 a와 b의 값은 동일, 음수일 경우 a가 b보다 작음, 양수일 경우 a가 b보다 큼 - 순서가 정해진다. 비교 함수에 값을 비교하는 방식을 직접 지정해서 0, 음수, 양수 중 하나를 반환하게 하는 방법으로 순서를 정할 수도 있다.
function compareNumbers(a, b) {
return a - b;
}
numberArray.sort(compareNumbers);
numberArray.sort((a,b) => a-b);
이중 배열 안 배열의 원하는 위치 값으로 정렬하기
- 정렬할 배열 안에 배열이 있다면 배열 안 값 중 원하는 위치의 값을 가지고 정렬이 가능하다.
- Map으로 필요한 데이터를 key,value 형태로 만든 후 배열로 변환해서 key 혹은 value의 값을 기준으로 정렬할 수 있다.
const myMap = new Map();
const arrayFromMap = [...myMap].sort((a, b) => a[1] - b[1]);
- 배열 안에 객체가 있다면 위와 동일한 방식으로 객체의 value를 비교하여 정렬할 수 있다.
const animalArray = [
{ type: cat, count: 5 },
{ type: dog, count: 2 },
{ type: cow, count: 1 },
{ type: goat, count: 3 }
]
const sortedTypeArray = animalArray.sort((a,b) => a.type - b.type);
const sortedCountArray = animalArray.sort((a,b) => a.count - b.count);
참고문서
Array.prototype.sort() - MDN