배열 요소의 자연 정렬(숫자 포함 문자열)
숫자가 포함된 문자열 배열을 의미 있는 방식으로 정렬하는 것은 어려울 수 있습니다. 사전순으로 정렬하면 예상치 못한 순서가 발생하는 경우가 많습니다. 원하는 "자연 정렬" 순서를 얻으려면 다음 접근 방식을 사용할 수 있습니다.
해결책:
제공된 JavaScript 함수는 naturalCompare라는 사용자 정의 비교 함수를 사용합니다. 작동 방식은 다음과 같습니다.
문자열 토큰화:
비교 루프:
같지 않은 토큰 길이 처리:
예:
다음은 이 접근 방식을 사용하여 배열을 정렬하는 예입니다.
< ;pre>
함수 naturalCompare(a, b) {
// Tokenization var ax = [], bx = []; a.replace(/(\d+)|(\D+)/g, function(_, , ) { ax.push([ || Infinity, || ""]) }); b.replace(/(\d+)|(\D+)/g, function(_, , ) { bx.push([ || Infinity, || ""]) }); // Comparison while(ax.length && bx.length) { var an = ax.shift(); var bn = bx.shift(); var nn = (an[0] - bn[0]) || an[1].localeCompare(bn[1]); if(nn) return nn; } // Handling unequal length return ax.length - bx.length;
}
// 테스트 배열 정렬
let arr = ["IL0 Foo", "PI0 Bar", "IL10 Baz", "IL3 Bob이 말합니다. hello"];
arr.sort(naturalCompare);
console.log(arr);
출력:
[
"IL0 푸",
"IL3 밥이 말해요 안녕하세요",
"IL10 Baz",
"PI0 바"
]
위 내용은 제공된 JavaScript 함수는 숫자가 포함된 문자열 배열의 자연 정렬을 어떻게 구현합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!