최근에 JS 정렬의 문제는 데이터베이스 정렬이 너무 소비되는 리소스가 클라이언트로 전송되면 서버 메모리 소비를 크게 줄일 수 있다는 것입니다. JS를 제외한 클라이언트에서는 불행히도 너무 나쁘게 배웠으므로 공부할 JS 만 선택할 수 있습니다. 본질 본질 테스트 후 JS Build -In 메소드 정렬은 매우 효율적입니다.
정렬 함수는 JS에서 기본적으로 제공되지만이 기능은 배열 컨텐츠의 ASCII 코드에 따라 배열됩니다. PHP에는 Multi_Sort 함수가 있지만 JS에는 그러한 기능이없는 것 같지만 JS의 정렬 함수는 두 차원 배열에 대한 비교 함수를 정의 할 수있는 매개 변수를 제공하기 때문에 중요하지 않습니다.
1. 숫자 값별로 정렬하십시오
다음 배열을 가정합니다
다음과 같이 코드 코드를 복사하십시오.
var arr = [[1, 2, 3], [7, 2, 3], [3, 2, 3];
각 하위 배열의 첫 번째 열을 정렬하려면 어떻게해야합니까?
다음과 같이 코드 코드를 복사하십시오.
arr.sort (function (x, y) {
X [0] y [0]를 반환합니다.
});
여기서 비교 함수의 역할은 무엇입니까? 실제로 배열은 예를 들어, 먼저 ARR [0] ~ X, ARR [1] ~ Y를 할당 한 다음 X [0] y [0]을 사용하여 다음에 따라 반환합니다. 반환 값은 반환되면 0보다 숫자로 숫자가되므로 y가 변경되지 않으면 x가 y 앞에 배치됩니다. 그런 다음 처음 두 가지가 정렬됩니다. 이것은 기본 순서의 비교 기능입니다 첫 번째 열에 정렬됩니다. 여기에 정렬은 ARR의 배열 구조를 수정하므로 정렬 ARR은 첫 번째 열에 따라 홍보되는 배열입니다.
2. 문자열별로 정렬하십시오
문자열로 정렬하면 JS가 제공 한 LocalEcompare 메소드를 사용할 수 있습니다.
LocalEcompare : 특정 순서로 두 개의 문자열을 비교하십시오.
LocalEcompare 메소드의 사용 규칙은 StringObject.localeCompare (target)입니다. StringObject가 대상보다 크면 메소드는 0보다 큰 숫자를 반환합니다. 두 문자열이 동일하거나 로컬 정렬 규칙에 따라 차이가없는 경우이 방법은 0을 반환합니다.이 방법은 로컬 규칙과 비교됩니다. 예를 들어, 운영 체제. 예를 들어, 순전히 두 문자와 비교되는 유니 코드 수는 많은 언어와 일치하지 않습니다.
예를 들어
다음과 같이 코드 코드를 복사하십시오.
var arr = [[ 'middle', 'country'], [ 'ah', ''], [ 'OH', '', '];
arr.sort (function (x, y) {
X [0] .LocaleCompare (y [0]);
});
결과적으로, 그것은 영어가 포함 된 첫 번째 열의 Pinyin에서 정렬됩니다 중국어와 Sino -British 혼합 행을 포함하여 문자열이 정렬됩니다. 순서 순서의 경우, 방법은 위와 동일하며 방법은 y [0] .localecompare (x [0])로 반환하도록 변경됩니다.
이러한 방식으로 분류 문제가 실현되며 JS 2 차원 배열에는 여전히 많은 장소가 있습니다. 어떤 사람들을 도울 수 있기를 바랍니다
다음과 같이 코드 코드를 복사하십시오.
함수 tblsort (s) {
for (r = 0; r <right_len; r ++) {
arrs [r] = []
for (c = 0; c <cel_len; c ++) {
arrrs [r] [c] = {} // 두 차원 배열에서 다른 객체를 만듭니다.
arr [r] [c] .html = table.rows [r] .cells [c] .innerhtml // html 테이블을 관련 배열에 넣고 정렬 후 페이지에 표시합니다.
var text = table.rows [r] .Cells [c] .innerText // 다음 판단에 대한 양식의 텍스트 내용을 가져옵니다.
// 데이터가 정상이 아닌 경우 음수로 보일 수있는 감지는 끝에서 순위를 매 깁니다.
if (text == '-') {{
arr [r] [c] .text = '-1';
} else if (text == 'reintegle') {{
arr [r] [c] .text = '-2';
} else if (text == 'no baidu snapshot'|| text == '순위 데이터 없음') {
arr [r] [c] .text = '-3'
} else if (text == '') {
arr [r] [c] .text = '-4'
} 또 다른 {
arr [r] [c] .text = table.rows [r] .cells [c] .innertext // 테이블의 텍스트 내용을 관련 배열에 넣습니다. 정렬을 위해 아래 정렬.
}
}
}
// ALERT (ARRS [0] [0] [ 'text'])
// Reve 판단은 현재 분류되거나 Desewess입니다.
if (Reve) {
arrs.sort (function (x, y) {
parsefloat (y [s] [ 'text']) -persefloat (x [s] [ 'text'])를 반환합니다.
});
Reve = 0
} 또 다른 {
arrs.sort (function (x, y) {
parsefloat (x [s] [ 'text']) -persefloat (y [s] [ 'text']) // 반환
})
Reve = 1
}
// 조정 된 HTML 컨텐츠를 양식에 넣습니다
for (r = 0; r <right_len; r ++) {
for (c = 0; c <cel_len; c ++) {
table.rows [r] .Cells [c] .innerHtml = arr [r] [c] [ 'html']]]
}
}
}
// 테이블 정렬 종료