JavaScript | sort()

Positive Ko·2020년 9월 30일
1

JavaScript

목록 보기
9/28
post-thumbnail

오늘은 array의 내장 함수 중 sort()에 대해 간략히 정리해본다.

sort() 메소드는 배열의 요소를 적절하게 정렬한 후 리턴한다. 원 배열이 바뀐다는 것을 유의하자. 기본 정렬 순서는 문자열의 유니코드 기준을 따른다.

const months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
console.log(months);
// expected output: Array ["Dec", "Feb", "Jan", "March"]

const array1 = [1, 30, 4, 21, 100000];
array1.sort();
console.log(array1);
// expected output: Array [1, 100000, 21, 30, 4]

위의 결과로 보아 숫자의 경우 오름차순이 아니라 1, 100000, 21, 30, 4 순으로 문자열로 취급되어 사전편집처럼 재정렬된 것을 알 수 있다.

기본 정렬 대신 새로운 정렬 기준을 만드려면 arr.sort()에 새로운 함수를 넣어주어야 한다. 인수로 넘겨주는 함수는 반드시 값 두 개를 비교해야 하고 반환 값도 있어야 한다.

다음은 숫자 정렬 방식

const nums = [1, 23, 11, 56, 7]

//사전식 정렬
nums.sort(); // 1, 11, 23, 56, 7

// 오름차순 정렬
nums.sort(function(a, b) {
	return a - b;
} // 1, 7, 11, 23, 56

// 내림차순 정렬
nums.sort(function(a, b) { 
	return b - a;
} // 56, 23, 11, 7, 1

sort() 안에 함수를 넣어주는 것으로 숫자를 올바르게 정렬할 수 있다.

다음은 object 정렬 방식

let fruits = [
    { name: 'apple', price: 12 },
    { name: 'melon', price: 42 },
    { name: 'kiwi', price: 1 },
    { name: 'pear', price: 11 },
    { name: 'oranage', prcie: 55}
]

// 이름 오름차순 정렬
fruits.sort(function(a, b) {
    return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
}); // apple kiwi melon orange pear

// 이름 내림차순 정렬
fruits.sort(function(a, b) {
    return a.name > b.name ? -1 : a.name < b.name ? 1 : 0;
}); // pear orange melon kiwi apple

// 가격 오름차순 정렬
let sortPrice = 'price';

fruits.sort(function(a, b) {
    return a[sortPrice] - b[sortPrice];
});

참고

http://dudmy.net/javascript/2015/11/16/javascript-sort/

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

profile
내 이름 고은정, 은을 180deg 돌려 고긍정 🤭

0개의 댓글