1.arr.sort([compareFunction])
에서 compareFunction(a,b)
은 정렬순서를 정의하는 함수. 주어지지 않을 경우에는 입력값들이 모두 string으로 변환되어 유니코드 표준으로 정렬(오름차순).
2.compareFunction(a, b)
반환값이 0보다 작으면, a의 index가 b보다 작다.
반환값이 0보다 크면, b의 index가 a보다 작다.
3.number 비교를 위해서는 array.sort((a,b) => a-b)
로 오름차순 정렬 가능.
(a-b가 0보다 작은 값을 반환하는 경우는 오름차순을 의미)
4.내림차순은 오름차순의 return값만 반대로 지정하면 됨.
a < b 일 때 0보다 작은 값 return => 오름차순
a > b 일 때 0보다 작은 값 return => 내림차순
const fruit = ['orange', 'apple', 'banana'];
/* 기본 정렬 */
fruit.sort(); // apple, banana, orange
reverse()
method는 배열의 순서를 반전시킴.const array1 = ['one', 'two', 'three'];
const reversed = array1.reverse();
console.log('reversed:', reversed);
// expected output: "reversed:" Array ["three", "two", "one"]
const score = [4, 11, 2, 10, 3, 1];
/* 오류 */
score.sort(); // 1, 10, 11, 2, 3, 4
// ASCII 문자 순서로 정렬되어 숫자의 크기대로 나오지 않음
/* 정상 동작 */
score.sort(function(a, b) { // 오름차순
return a - b;
// 1, 2, 3, 4, 10, 11
});
score.sort(function(a, b) { // 내림차순
return b - a;
// 11, 10, 4, 3, 2, 1
});
var items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic', value: 13 },
{ name: 'Zeros', value: 37 }
];
// sort by value
items.sort(function (a, b) {
return a.value - b.value;
});
// sort by name
//오름차순
items.sort(function(a, b) { //오름차순
var nameA = a.name.toUpperCase(); // ignore upper and lowercase
var nameB = b.name.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
// 내림차순
items.sort(function(a, b) {
var nameA = a.name.toUpperCase(); // ignore upper and lowercase
var nameB = b.name.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return 1;
}
if (nameA > nameB) {
return -1;
}
// names must be equal
return 0;
});