배운점
블로그 자료를 보고 정리한 글입니다.
자바스크립트 sort 에 대해 배웠습니다.
숫자 정렬
오름차순은 다음과 같다.
var numbers = [1, 10, 2, 20, 3, 30];
numbers.sort(function compare(a, b) {
return a - b;
});
나는 화살표 함수로 짜는게 더 마음에 들었다.
sort 할때 compare 함수가 필요하다는 사실을 인지하고 나는 화살표 함수를 사용하기로 했다.
var numbers = [1, 10, 2, 20, 3, 30];
numbers.sort((a, b) => {
return a - b;
});
내림차순은 다음과 같다.
var numbers = [1, 10, 2, 20, 3, 30];
numbers.sort((a, b) => {
return b - a;
});
문자열 정렬
오름차순
var strArray = ["BA", "BB", "AA", "AB", "CB", "CA"];
strArray.sort();
console.log(strArray); //[ 'AA', 'AB', 'BA', 'BB', 'CA', 'CB' ]
내림차순
var strArray = ["BA", "BB", "AA", "AB", "CB", "CA"];
strArray.sort((a, b) => {
if (a > b) return -1;
else if (b > a) return 1;
else return 0;
});
console.log(strArray); //[ 'CB', 'CA', 'BB', 'BA', 'AB', 'AA' ]
대문자와 소문자를 포함할 경우
- 오름차순
strArray.sort((a, b) => {
let x = a.toUpperCase(),
y = b.toUpperCase();
if (x > y) return 1;
else if (y > x) return -1;
else return 0;
});
console.log(strArray); // [ 'aa', 'Ab', 'bA', 'Bb', 'ca', 'cB' ]
2. 내림차순
변수 두개 선언을 콤마로 한줄에 선언할 수 있다는 것을 또 다시 상기시켰다.
strArray.sort((a, b) => {
let x = a.toUpperCase(),
y = b.toUpperCase();
if (x > y) return -1;
else if (y > x) return 1;
else return 0;
});
console.log(strArray); // ["cB","ca","Bb","bA","Ab","aa"]
유의해야할 점
sort 안에 비교함수를 넣지 않았을 경우 즉, sort() 만 사용할 경우 유니코드를 기준으로 정렬된다.
A B C a b c 순이다.
내가 병신인 이유
내림차순은 오름차순 구하고 reverse 하면 되고
오름차순은 내림차순 구하고 reverse 하면 된다.
나는 이걸 지금에서야 깨달았다.
날짜 정렬
var dateArray = ['July 1, 2020', 'August 15, 2010', 'December 12, 2015'];
dateArray.sort(function compare(a, b) {
let x = new Date(a),
y = new Date(b);
return x - y;
});
console.log(dateArray); // ["August 15, 2010","December 12, 2015","July 1, 2020"]
출처: https://developer-talk.tistory.com/73 [평범한 직장인의 공부 정리:티스토리]
객체 정렬
오름차순
ar employees = [
{name: '홍길동', salary : 30000},
{name: '김길동', salary : 10000},
{name: '마이콜', salary : 20000}
];
employees.sort(function compare(a, b) {
return a.salary - b.salary;
});
console.log(employees);
/* result
[
{
"name": "김길동",
"salary": 10000
},
{
"name": "마이콜",
"salary": 20000
},
{
"name": "홍길동",
"salary": 30000
}]
*/
출처: https://developer-talk.tistory.com/73 [평범한 직장인의 공부 정리:티스토리]
내림차순
var employees = [
{ name: "홍길동", salary: 30000 },
{ name: "김길동", salary: 10000 },
{ name: "마이콜", salary: 20000 },
];
employees.sort(function compare(a, b) {
return b.salary - a.salary;
});
console.log(employees);
/* result
[
{ name: '홍길동', salary: 30000 },
{ name: '마이콜', salary: 20000 },
{ name: '김길동', salary: 10000 }
]
*/
문제풀이
function solution(array, commands) {
var answer = [];
for (let command of commands){
const [start,end,target] = command
const slice_array = array.slice(start-1,end)
console.log(slice_array)
slice_array.sort((a,b)=>a-b)
console.log(slice_array)
answer.push(slice_array[target-1])
}
return answer;
}
'공부기록 > 자바스크립트 코딩테스트' 카테고리의 다른 글
[프로그래머스/JS] 최대공약수와 최소공배수 (0) | 2022.06.20 |
---|---|
[프로그래머스/JS] 하샤드 수 (0) | 2022.06.20 |
[프로그래머스/JS] 모의고사 (0) | 2022.06.16 |
[프로그래머스/JS] 완주하지 못한 선수 (0) | 2022.06.16 |
백준/JS 2738 행렬 덧셈 (0) | 2022.06.15 |