[JavaScript] 정렬:문자열과 숫자가 혼합된 요소의 정렬
9367 단어 JavaScripttech
const odd_days = [
['1日'],['3日'],['13日'],['5日'],['9日'],['11日'],['7日'],['15日'],['17日'],
]
희망 날짜는 승차순으로 배열한다.그러나
sort()
를 사용하여 다시 배열하더라도 sort()
는 기본적으로 오름차순과 문자열로 정렬되기 때문에'1일'과'11일'은 11일이 먼저 배열된다.odd_days.sort()
// odd_daysの中身
// [["11日"],["13日"],["15日"],["17日"],["1日"],["3日"],["5日"],["7日"],["9日"]]
해본 일
sort()는 매개 변수에서 비교 함수를 지정할 수 있기 때문에 비교 함수와
parseInt()
를 조합하여 해결합니다.배열의 각 요소의 시작이 다시 배열되기 때문에 사용
parseInt()
이 수치로 변경됩니다.이렇게 해도 두 자릿수 이상의 수치를 얻을 수 있다.첫 번째 요소부터 요소의 컨텐트를 차례로 비교합니다.
function compare(a,b){
let index = 0
let a_num = parseInt(a)
let b_num = parseInt(b)
if (a_num > b_num) {
index = 1
}else if (a_num < b_num) {
index = -1
}
return index
}
const odd_days = [
['1日'],['3日'],['13日'],['5日'],['9日'],['11日'],['7日'],['15日'],['17日'],
]
odd_days.sort(compare)
// odd_daysの中身が日付の昇順にソートされる
// [["1日"],["3日"],["5日"],["7日"],["9日"],["11日"],["13日"],["15日"],["17日"]]
공식 문서에도 상세한 설명이 있는데 비교 함수(이번은compore(a,b)
의 반환값은0미만일 경우a가b보다먼저=a,b순으로정렬
0에서a와b는=a,b순으로정렬
0이상일 경우b가a보다 먼저배열=b,a의순서배열(순서변경)
이번 정의의 비교 함수
compore(a,b)
에서 먼저 배열된 요소를 각각 parseInt()
로 수치로 변환한다.이 변환된 수치a_num
와 b_num
의 크기를 비교해 a_num
가 클 때만 배열 요소를 바꾼다.parseInt()
로 변환되었기 때문에 2자리 이상을 포함하는 수치도 승차순으로 정렬할 수 있다.가득 담았으니까 팩스 한 번 더 주세요.
참고로
compare(a,b)
의 내용은 다음과 같이 팩스로 진행할 수 있습니다.비교 함수의 반환값의 구조를 알면 이 코드도 이해할 수 있을 것이다.function compare(a,b){
return parseInt(a) - parseInt(b)
}
arlo 함수를 더 사용하면 함수 정의가 필요하지 않습니다.odd_days.sort((a,b) => parseInt(a) - parseInt(b))
감상
실제로 설치하기는 확실히 매우 간단하다.
알아봐도 안 나와서 적어놨어요.
참고 자료
sort()
와 비교 함수parseInt()
Reference
이 문제에 관하여([JavaScript] 정렬:문자열과 숫자가 혼합된 요소의 정렬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ymkn8crz/articles/ff39b43c4defc3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)