이전 기사에서는 JavaScript 정렬 배열 정렬 메소드와 자체 구현 된 정렬 메소드를 소개했으며 내 자신의 방법을 사용하여 숫자 배열의 정렬을 구현했습니다.
물론 실제로 사용하면 정렬 방법을 사용하는 것이 더 편리합니다. 그러나 이전 블로그 게시물에서 숫자 정렬 만 구현했지만 SROT 메소드는 기본적으로 문자를 정렬 할 수 있습니다! 내 코드는 숫자 만 정렬 할 수 있으며 여전히 약해 보입니다.
따라서 글자 나 중국어를 분류 할 수있는 정렬 방법을 추가해야합니다.
코드를 구현하십시오
$ (function () {var arr = [ "jack", "book", "fung", 76, "love", "mark", "intera", "wina", "phone", "andy lau"]; console.log ( 'Original Array'); console.log ( 'arr); large '); console.log ('arrsortmintomax (arr)); console.log ( 'moge에서 작은 것으로 정렬 된 메소드'; ""; for (var i = 0; i <arr.length; i ++) {if (typeof (arr [i]) == "string") {if (arr [i] .charcodeat () arr [i]; minvul = arch [i] index = i;}}}; return { "minnum": minvul, "index": index};} 함수 arrsortmintomax (arr) {var arrnew = []; var arrold = arr.concat (var i = 0; i <arr.length; i ++) {arrnew.push (arrminnum (arrold) .minnum); arrold.splice (arrminnum (arrminnum (arrlold). index, 1))}; return (arrnew);} 함수 arrmaxnum (arr) {var maxnum = -infinity, index = -1, maxvul = "{aR <arr. (typeof (arr [i]) == "string") {if (arr [i] .charcodeat ()> maxnum) {maxnum = arr [i] .charcodeat (); maxvul = arr [i]; index = i;}} else {if (arr [i]> maxnum) {maxnum = in indely [i]}}}; { "maxnum": maxvul, "index": index};} 함수 arrsortmaxtomin (arr) {var arrnew = []; var arrold = arr.slice (0); for (var i = 0; i <arr.length; i ++) {arrnew.push (arrmaxnum (arrold) .maxnum); arrold.splice (arrmaxnum (arrmaxnum (arrold)). index, 1);}; return (arrnew);}실행 스크린 샷은 다음과 같습니다.
정렬 원리
숫자라면 숫자와 직접 비교됩니다.
문자열 인 경우 정렬을 위해 charcodeat ()를 사용하여 유니 코드 인코딩으로 변환됩니다.
유니 코드는 0-65535 사이의 정수입니다
다른 지침
정상적인 분류 논리에 따르면, 숫자는 모든 문자보다 작고 문자는 모든 중국어보다 작으며, 중국어는 첫 번째 문자의 첫 글자에 따라 분류되어야합니다.
문자가 모든 중국인보다 작다는 것을 제외하고는 내 코드가 구현되지 않았습니다.
논리는 또한 실현되고, 한자를 찾기, 숫자와 숫자를 비교하고, 문자와 문자를 비교하고, 중국어와 중국어를 비교 한 다음, 스플 라이스 어레이를 비교해야합니다.
중국어로 첫 번째 캐릭터의 이니셜을 얻는 것이 조금 더 번거 롭을 수 있습니다.
한자는 직접 비교할 수 있습니다.
위 그림에서 볼 수 있듯이 Zhang Fei가 보스가되는 것은 의미가 있습니다. JavaScript는 마침내 수천 년 후 Zhang Fei를 유명하게 만들었습니다. 그는 당시에 보스 였을 것입니다! ~