sourcecode

정렬 목적으로 두 문자열을 알파벳 순으로 비교

codebag 2023. 9. 10. 12:14
반응형

정렬 목적으로 두 문자열을 알파벳 순으로 비교

정렬 목적으로 문자열 두 개를 알파벳 순으로 비교하려고 합니다.예를 들어 다음과 같은 부울 체크를 받고 싶습니다.if('aaaa' < 'ab'). 해봤는데 결과가 안 나와서 구문이 좀 안 맞는 것 같아요.jquery나 javascript에서는 어떻게 해야 합니까?

비교는 정렬을 위한 것이라고 말씀하셨습니다.그런 다음 localCompare 대신 다음을 제안합니다.

"a".localeCompare("b");

돌아오다-1부터"a" < "b",1아니면0그렇지 않으면 Array.prototype.sort()에 필요한 것과 같습니다.

정렬은 로케일에 따라 다릅니다.예를 들어 독일어로,ä는 의 변형입니다.a,그렇게"ä".localeCompare("b", "de-DE")돌아온다-1. 스웨덴어로.ä알파벳의 마지막 글자 중 하나입니다. 그래서."ä".localeCompare("b", "sv-SE")돌아온다1.

다음에 대한 두 번째 매개 변수 없이localeCompare, 브라우저의 로케일이 사용됩니다.제 경험으로는 제가 원하는 것은 절대 아닙니다. 그렇게 되면 모든 사용자에게 고정된 로케일이 있는 서버와는 다르게 정렬되기 때문입니다.

또한 정렬할 항목에 숫자가 포함되어 있으면 다음을 수행할 수 있습니다.

"a5b".localeCompare("a21b", undefined, { numeric: true })

이것은 숫자로서의 5가 21보다 작다는 것을 인식하여 -1을 반환합니다.없이.{ numeric: true }"2"는 "5" 앞에 정렬되므로 1을 반환합니다.많은 실제 응용 프로그램에서 사용자는 "a21b" 앞에 "a5b"가 올 것으로 예상합니다.

몇 가지 테스트 사례를 살펴보겠습니다. JS 콘솔에서 다음 식을 실행해 보십시오.

"a" < "b"

"aa" < "ab"

"aaa" < "aab"

모두 사실입니다.

자바스크립트는 문자열을 문자별로 비교하고 알파벳의 "b" 앞에 "a"가 나타나므로 이보다 작습니다.

당신의 경우는 그렇게 작동합니다.

1. "aaaa" < "ab"

처음 두 "a" 문자를 비교합니다. 모두 동일합니다. 다음 문자로 이동합니다.

2. "aaaa" < "ab"

는 두 번째 문자 "a"를 "b"와 비교합니다. - 헉! "a"는 "b" 앞에 옵니다.true를 반환합니다.

"x" > "X"와 같은 문자열 비교는 대소문자를 구분한다는 것만 기억하세요.

"aa" < "ab" //true
"aa" < "Ab" //false

사용가능.toLowerCase()케이스 감도 없이 비교할 수 있습니다.

예를 들어, 다음과 같은 객체의 배열을 가지고 있다고 가정해 보겠습니다.

{ name: String }

그러면 배열을 다음과 같이 정렬할 수 있습니다.

array.sort((a, b) => {
  if (a.name === b.name) return 0;
  return a.name > b.name ? 1 : -1;
});

참고: 대문자를 주의해야 합니다.목적에 따라 줄을 소문자로 주조해야 할 수도 있습니다.

"a".localeCompare("b")실제로 돌아와야 합니다.-1부터a선후배b

http://www.w3schools.com/jsref/jsref_localecompare.asp

언급URL : https://stackoverflow.com/questions/10198257/comparing-2-strings-alphabetically-for-sorting-purposes

반응형