[TIL 13] javascript | 배열의 정렬

sunny·2021년 3월 3일
0
post-thumbnail

sort()

배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환한다.
각 요소의 유니코드 값에 따라 자동으로 정렬되며 (기본 오름차순) 원본 배열이 변경된다.

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

const arr = [1, 30, 4, 21, 100000];
arr.sort();
console.log(arr); //[1, 100000, 21, 30, 4]

숫자는 askii code값을 기준으로 정렬하기 때문에 제대로 정렬되지 않는다.
다음과 같은 코드로 오름차순과 내림차순 정렬을 구현할 수 있다.

const arr = [1, 30, 4, 21, 100000];

//오름차순
arr.sort( (a, b) => a - b);

//내림차순
arr.sort( (a, b) => b - a);

object도 각각의 속성을 기준으로 정렬할 수 있다.

let fruits = [
    { name: "apple", price: 2100 }, 
    { name: "orange", price: 2500 }, 
    { name: "strawberry", price: 1900 }, 
    { name: "banana", price: 2000 }, 
    { name: "grape", price: 2600 }
];

//price를 기준으로
fruits.sort( (a, b) => (a.price - b.price));

//name을 기준으로
fruits.sort( (a, b) => (a.name > b.name ? 1 : -1));

localeCompare()

기준 문자열이 정렬상 string 객체의 문자열 뒤에 있으면 음수, 기준 문자열이 앞에 있는 경우는 양수, 같은 경우에는 0을 반환한다.

let str = "javascript";

//apple은 javascript보다 사전상 앞쪽에 있다.
str.localeCompare("apple"); //1

//key은 javascript보다는 사전상 뒤쪽에 있다.
str.localeCompare("key"); //-1

str.localeCompare("javascript"); //0
profile
blog 👉🏻 https://kimnamsun.github.io/

0개의 댓글