[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_numb_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))

감상


실제로 설치하기는 확실히 매우 간단하다.
알아봐도 안 나와서 적어놨어요.

참고 자료


https://www.webprofessional.jp/sort-an-array-of-objects-in-javascript/ sort()와 비교 함수
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/sort parseInt()https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/parseInt

좋은 웹페이지 즐겨찾기