Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- @Moditying @Query
- sql like연산자
- 깃 토큰 만료
- 객체의키값만 찾기
- 중복문자제거
- 배열을 객체로
- ...점점점문법
- 단어 제거
- 중복 문자열
- lastIndexOf()
- 코딩 어?
- ubuntu타임존
- 문자열순서바꾸기
- 객체를 배열로
- sql 문자열 패턴 검색
- 중복된 단어
- js 문자열을 문자배열로
- 중복단어제거
- 시퀄 문법
- 객체의 밸류값만 찾기
- indexOf()
- 프론트엔드 스쿨
- 재귀스왑
- 5.3.8 Modifying Queries
- 레디스 확인
- 배엘에서 스왑
- 스프링 데이타 JPA
- 문자열 중복
- 우분투 시간 변경
- 제로베이스
Archives
- Today
- Total
코딩기록
JS) 오름차순, 내림차순 (배열 값 정렬 ) 본문
728x90
배열값을 오름차순과 내림차순으로 정렬
오름차순
방법1.
\Math.min / Math.max로 시작점과 끝점을 지정
function answer(x, y) {
let result = [];
// 시작점과 끝점 설정
const start = Math.min(x, y);
const end = Math.max(x, y);
// 단일 for문으로 처리
for (let i = start; i <= end; i++) {
result.push(i);
}
return result;
}
let input = [
// TC: 1
[3, 7],
// TC: 2
[8, 3],
// TC: 3
[12, 10],
];
for (let i = 0; i < input.length; i++) {
process.stdout.write(`#${i + 1} `);
console.log(answer(input[i][0], input[i][1]));
}
//print
#1 [3, 4, 5, 6, 7]
#2 [3, 4, 5, 6, 7, 8]
#3 [10, 11, 12]
방법2.
비교연산자 ( >, < ) 로 x는 항상 작은 값, y는 항상 큰 값
만약 x가 y보다 크다면, 두 값을 서로 바꿈.
function answer(x, y) {
let result = [];
// x를 항상 작게 만듦
if (x > y) {
let t = x;
x = y;
y = t;
}
// 작은 값부터 큰 값까지 반복
for (let i = x; i <= y; i++) {
result.push(i);
}
return result;
}
let input = [
[3, 7], // [3, 4, 5, 6, 7]
[8, 3], // [3, 4, 5, 6, 7, 8]
[12, 10], // [10, 11, 12]
];
for (let i = 0; i < input.length; i++) {
console.log(`#${i + 1} ${answer(input[i][0], input[i][1])}`);
}
//print
#1 [3, 4, 5, 6, 7]
#2 [3, 4, 5, 6, 7, 8]
#3 [10, 11, 12]
방법 3.
sort(a, b)
sort()는 기본적으로 배열 요소를 문자열로 변환한 후 유니코드 순서에 따라 정렬.
중요한건
const cards = [5, 1, 4, 2, 3];
// 오름차순
const ascendingOrder = cards.sort((a, b) => a - b);
console.log('ascendingOrder: ', ascendingOrder);
// 내림차순
const descendingOrder = cards.sort((a, b) => b - a);
console.log('descendingOrder: ', descendingOrder);
// print
ascendingOrder: [
1, 2, 3, 4, 5
]
descendingOrder: [
5, 4, 3, 2, 1
]
흐름 순서
let n = [5, 1, 4, 2, 3];
n.sort((a, b) => b - a);
// 내부적으로 sort는 아래와 같은 비교를 반복 수행:
1. 비교: (5, 1) => 1 - 5 = -4 → 1이 5보다 뒤로 감.
2. 비교: (4, 5) => 5 - 4 = 1 → 4가 5보다 뒤로 감.
3. 비교: (2, 3) => 3 - 2 = 1 → 2가 3보다 뒤로 감.
...
// 최종 배열: [5, 4, 3, 2, 1]
sort 동작 방법
- 콜백 함수 (a, b) => b - a에서 a = 5, b = 1.
- 계산: 5 - 1 = -4.
- 결과가 음수이므로, a가 b보다 앞에 있어야 함.
- 정렬 결과: [5, 1 ...].
- 중요한 점은 '비교 순서는 고정되지 않는다' 는 것.
- 배열안 5-4, 5-2, 5-3 을 다 하고 1-4 를 할수 도 있고
- 두번째로 [5,1,4 ..] 배열에서 1-4를 할 수도 있음.
- 최적화를 위해 비교 순서를 상황에 따라 동적으로 결정함.
반응형
'프론트 > JavaScript' 카테고리의 다른 글
JS) 좋아요, 하트 클릭시 자바스크립트, css로 색상 변경 (5) | 2024.10.08 |
---|---|
모던 자바스크립트 Deep Dive 책 공부 할때 도움되는 무료강의 (0) | 2024.07.23 |
JS) 몽고디비 - updateOne 배열 안의 객체 밸류 업데이트 (0) | 2022.03.11 |
JS) 객체 안에 객체 넣기 (0) | 2022.03.11 |
JS) 반복문의 제어 break, continue (0) | 2022.01.15 |
Comments