let names = ["Michael", "Bab", "Andrea"];
let num = [4, 5, 6, 9, 8, 7, 1, 2, 3, 0, 11, 12, 13, 10];
let values = [true, false, {}, [], 1, "a"];
// [ 'Andrea', 'Bab', 'Michael' ]
// [ [], 1, {}, 'a', false, true ]
// [0, 1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(names.sort());
console.log(values.sort());
console.log(num.sort());
문자열은 알바벳 순으로 정렬됩니다.
배열, 숫자, 객체, 문자열, false, true 순으로 정렬이 됩니다.
숫자는 문자열의 유니코드 코드 포인트를 따르기 때문에
1 11 12 2 3 4 순서로 정렬됩니다.
숫자 순서로 정렬하기 위해서는 sort() 안에 비교 함수를 넣습니다
console.log(num.sort((a, b) => a - b));
/*
오름차순
[
0, 1, 2, 3, 4, 5,
6, 7, 8, 9, 10, 11,
12, 13
]
*/
console.log(num.sort((a, b) => b - a));
/*
내림차순
[
13, 12, 11, 10, 9, 8,
7, 6, 5, 4, 3, 2,
1, 0
]
*/
Map을 이용한 정렬
let list = [
'korea',
'Ukraine',
'Russia',
'japan',
'china',
'America',
'poland',
'Rumania',
];
// 임시 배열은 위치 및 정렬 값이있는 객체를 보유합니다.
let mapped = list.map(function (element, index) {
return { index: index, value: element.toLowerCase() };
});
console.log(mapped);
// 축소 치를 포함한 매핑 된 배열의 소트
mapped.sort(function (a, b) {
return +(a.value > b.value) || +(a.value === b.value) - 1;
});
console.log(mapped);
// 결과 순서를 위한 컨테이너
let result = mapped.map(function (element) {
return list[element.index];
});
console.log(result);
/*
let mapped = list.map(function (element, index) {
return { index: index, value: element.toLowerCase() };
});
[
{ index: 0, value: 'korea' },
{ index: 1, value: 'ukraine' },
{ index: 2, value: 'russia' },
{ index: 3, value: 'japan' },
{ index: 4, value: 'china' },
{ index: 5, value: 'america' },
{ index: 6, value: 'poland' },
{ index: 7, value: 'rumania' }
]
mapped.sort(function (a, b) {
return +(a.value > b.value) || +(a.value === b.value) - 1;
});
[
{ index: 5, value: 'america' },
{ index: 4, value: 'china' },
{ index: 3, value: 'japan' },
{ index: 0, value: 'korea' },
{ index: 6, value: 'poland' },
{ index: 7, value: 'rumania' },
{ index: 2, value: 'russia' },
{ index: 1, value: 'ukraine' }
]
let result = mapped.map(function (element) {
return list[element.index];
});
[
'America', 'china',
'japan', 'korea',
'poland', 'Rumania',
'Russia', 'Ukraine'
]
*/
[참조]
Array.prototype.sort()
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
'코딩 테스트 > 알고리즘' 카테고리의 다른 글
Problem Solving Approach (0) | 2020.07.09 |
---|---|
자바스크립트. 문자 세기 (0) | 2020.07.08 |
자바스크립트. for 반복문 수행시간 비교 (0) | 2020.07.04 |
Analyzing Performance of Arrays and Objects (0) | 2020.07.04 |
Big O Notation (0) | 2020.07.02 |