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 |
Tags
- lastIndexOf()
- 코딩 어?
- 레디스 확인
- 중복된 단어
- 5.3.8 Modifying Queries
- 스프링 데이타 JPA
- 재귀스왑
- 중복문자제거
- 배엘에서 스왑
- 객체의 밸류값만 찾기
- 시퀄 문법
- 우분투 시간 변경
- 중복 문자열
- sql like연산자
- 깃 토큰 만료
- 객체를 배열로
- 문자열순서바꾸기
- @Moditying @Query
- sql 문자열 패턴 검색
- 배열을 객체로
- indexOf()
- ...점점점문법
- 제로베이스
- 프론트엔드 스쿨
- ubuntu타임존
- 객체의키값만 찾기
- 문자열 중복
- 단어 제거
- js 문자열을 문자배열로
- 중복단어제거
Archives
- Today
- Total
코딩기록
JS) .sort() 고차함수 - 문자열로 변경되는 sort를 보완해보자 ( 배열 오름차순, 내림차순 정렬) 본문
728x90
숫자배열 오름,내림차순 정렬
.sort() 는 오름차순으로 배열값을 정렬한다.
문제는 문자열로 치완해서 유니코드 순서에 따라 정렬하기 때문에 우리의 예상과 결과값이 다르다는 것이다. 그것을 보완하는 방법이 고차함수 이다.
아래처럼 ascending_order 이라는 함수를 만들어 사용하면 .sort() 오름차순 descending_order는 내림차순으로 숫자가 정리된다.
let nums = [1, -1, 4, 0, 10, 20, 12];
console.log(nums.sort()); //[ -1, 0, 1, 10, 12, 20, 4 ]
console.log(nums.reverse()); //[ 4, 20, 12, 10, 1, 0, -1 ]
// x=1 - y=(-1) = 2 -> x=-1 y=1
let ascending_order = function (x, y) {
return x - y;
};
let descending_order = function (x, y) {
return y - x;
};
console.log(nums.sort(ascending_order)); //[ -1, 0, 1, 4, 10, 12, 20 ]
console.log(nums.sort(descending_order)); /[ 20, 12, 10, 4, 1, 0, -1 ]
문자배열 오름, 내림 차순 정렬
문자열은 대문자가 더 작은 수라 sort()로 오름차순 정렬을 하면 Orange가 맨앞에 온다.
.toUpperCase(); //로 모두 대문자로 변환
if (x > y) //만약 x가 y 보다 크면 return 1; //리턴 1로 해서 자리를 바꾸고
else if (y > x) //만약 y가 x보다 크면 return -1; //리턴 -1을 해라;
else return 0; //아니면 0 리턴.
이렇게 해서 비교후 콘솔로 찍으면 아래처럼 결과가 나온다.
let fruits = ["apple", "Orange", "orange", "banana"];
console.log(fruits.sort()); //[ 'Orange', 'apple', 'banana', 'orange' ]
console.log(fruits.reverse()); //[ 'orange', 'banana', 'apple', 'Orange' ]
let ascending_order = function (x, y) {
x = x.toUpperCase();
y = y.toUpperCase();
if (x > y) return 1;
else if (y > x) return -1;
else return 0;
// return x > y ? 1 : -1; //삼항연산자
};
console.log(fruits.sort(ascending_order)); //[ 'apple', 'banana', 'orange', 'Orange' ]
console.log(fruits.reverse(ascending_order)); //[ 'Orange', 'orange', 'banana', 'apple' ]
참고
제로베이스강의 - 이론부터 실전까지 모든 것을 담은 자료구조/알고리즘 - 고차함수
반응형
'프론트' 카테고리의 다른 글
JS) 객체지만 배열처럼 사용가능한 유사배열을 배열로 바꾸는 .from() (0) | 2024.07.06 |
---|---|
JS) 생성자 new 없을때 붙여주는 에러핸들링 코드 (0) | 2024.07.06 |
지난 한달간 좋았던 점 (1) | 2024.07.02 |
a 태그 새창 링크 연결 target="_blank" + 하이퍼링크의 보안 취약점 보완 (0) | 2024.06.26 |
웹접근성 aria-label, aria-labelledby /스크린리더 (0) | 2024.06.25 |
Comments