javascript array를 정렬하는 방법에 대해 알아보겠습니다.
array sort 메서드
를 사용하면 쉽게 배열을 정렬할 수 있습니다.
json array sort
도 json key를 바탕으로 원하는 기준으로 정렬할 수 있습니다.
array.sort
배열 값을 정렬한 후에 정렬된 배열을 반환
합니다.
기본 정렬 순서는 문자열의 unicode 포인트 순서
를 따라 정렬됩니다.
Syntax: arr.sort([compareFunction])
- compareFunction: 배열의 정렬 순서를 정의하는 메서드
let array = [3, 5, 4, 1, 2];
array.sort();
console.log(array);
// output: [ 1, 2, 3, 4, 5 ]
array = ['b', 'a', 'e', 'd', 'c'];
array.sort();
console.log(array);
// output: [ 'a', 'b', 'c', 'd', 'e' ]
일반적인 경우라면
sort 메서드
만 사용하여 쉽게 정렬할 수 있습니다.
예상과 다르게 정렬되는 경우에 대해 살펴보겠습니다.
array.sort 예상과 다른 경우
숫자들로만 이루어진 배열에서 sort 메서드를 사용하면 오름차순으로 정렬이 잘 될까요?
저는 그렇게 생각했습니다...
예제를 한번 보시죠
let array = [1, 2, 11, 34, 22];
array.sort();
console.log(array);
// output: [ 1, 11, 2, 22, 34 ]
예상과 같으셨나요? 능력자시군요..^^
NOTE:compareFunction
이 없으면 배열의 값를 문자열로 변환하고 유니코드 순서로 문자열을 비교하여 정렬합니다.
숫자에 대한오름차순
혹은내림차순
에 대한 정렬은 다른 방법이 필요해보입니다.
compareFunction(parameter)
sort 메서드의 파라미터로 정렬 순서를 정의
하는 함수입니다.
- compareFunction(a, b) { return -1; }:
a를 b보다 낮은 index
로 정렬됩니다. [a, b] - compareFunction(a, b) { return 1; }:
b를 a보다 낮은 index
로 정렬됩니다. [b, a] - compareFunction(a, b) { return 0; }:
a, b에 대한 순서를 변경하지 않습니다.
위의 정의를 바탕으로 다시 정렬해보겠습니다.
let array = [1, 2, 11, 34, 22];
array.sort((a, b) => a - b);
console.log(array);
// output: [ 1, 2, 11, 22, 34 ]
array.sort((a, b) => b - a);
console.log(array);
// output: [ 34, 22, 11, 2, 1 ]
array = [1, 2, 11, 34, 22];
array.sort((a, b) => 0);
console.log(array);
// output: [1, 2, 11, 34, 22]
INFO: 이제 원하는 정렬 방식으로 정렬이 잘 됐습니다.
- a - b:
오름차순
정렬 - b - a:
내림차순
정렬 - a = b: 순서를 변경하지 않음
json array sort
위 내용을 바탕으로 json array 정렬
에 대해 알아보겠습니다.
기준이 되는 json key를 정하고 비교하여 정렬하면 원하는 결과를 얻을 수 있습니다.
let array = [
{ name: 'Amelia', age: 23 },
{ name: 'Grace', age: 32 },
{ name: 'Belita', age: 54 },
{ name: 'Isabel', age: 17 },
{ name: 'Luara', age: 48 },
{ name: 'Jessie', age: 73 }
];
// order by age asc
array.sort((a, b) => {
if (a.age < b.age) return -1;
if (a.age > b.age) return 1;
return 0;
});
console.log(array);
// output:
// [
// { name: 'Isabel', age: 17 },
// { name: 'Amelia', age: 23 },
// { name: 'Grace', age: 32 },
// { name: 'Luara', age: 48 },
// { name: 'Belita', age: 54 },
// { name: 'Jessie', age: 73 }
// ]
// order by name desc
array.sort((a, b) => {
a = a.name.toLowerCase();
b = b.name.toLowerCase();
if (a < b) return 1;
if (a > b) return -1;
return 0;
});
console.log(array);
// output:
// [
// { name: 'Jessie', age: 73 },
// { name: 'Belita', age: 54 },
// { name: 'Luara', age: 48 },
// { name: 'Grace', age: 32 },
// { name: 'Amelia', age: 23 },
// { name: 'Isabel', age: 17 }
// ]
json array에서 json key의
age를 기준으로 오름차순 정렬
한 결과와name기준으로 내림차순 정렬
한 결과를 볼 수 있습니다.
[javascript] - 자바스크립트 javascript array 값 요소 찾기
[javascript] - 자바스크립트 javascript array to string 배열을 문자로 변경
[javascript] - [javascript] 자바스크립트 array 배열
[javascript] - [javascript] 자바스크립트 배열 추가 삭제 array 다루기
[javascript] - [javascript] 자바스크립트 json push, input value, 값 넣기
'javascript' 카테고리의 다른 글
자주 쓰는 javascript array 내장 함수 push, pop, slice, etc. (0) | 2023.02.15 |
---|---|
자바스크립트 javascript array 찾기 (0) | 2020.08.12 |
자바스크립트 javascript 문자열 찾기 (0) | 2020.08.10 |
자바스크립트 javascript 문자열 공백 제거 trim (0) | 2020.08.10 |
자바스크립트 javascript string 길이 length (0) | 2020.08.08 |