>웹 프론트엔드 >JS 튜토리얼 >자바스크립트 배열 재정렬 방법에 대해 자세히 알아보세요.

자바스크립트 배열 재정렬 방법에 대해 자세히 알아보세요.

迷茫
迷茫원래의
2017-03-26 15:10:371232검색

자바스크립트 배열의 기본 재정렬 방식

1. 배열 역방향 방식

(1) 기능

역방향 위치 배열의 요소 수 (원래 배열 변경)

(2) 구문

arr.reverse()   //没有参数

(3) 예시

let myArray =  [ 'one', 'two', 'three' ]; 

myArray.reverse();

console.log(myArray); //  ["three", "two", "one"]

(4) 반환값
원본 배열 참고 , 배열이 새로 생성되지 않습니다

let myArray =  [ 'one', 'two', 'three' ]; 

let result = myArray.reverse();

result[2] = 2;

console.log(myArray);   //["three", "two", 2]

console.log(result);    //["three", "two", 2]

(5) 단점
유연성이 부족하고 배열을 뒤집을 수만 있습니다

2. 배열 정렬 방법

(1 )
sort() 함수는 배열의 요소를 적절한 위치에 정렬합니다(원래 배열은 변경됨)

(2) 구문

arr.sort();
arr.sort(compareFunction);

(3) 매개변수
선택 과목. 특정 순서로 정렬하는 함수를 공식화하는 데 사용됩니다.

예를 들어 매개변수가 생략된 경우 이렇게 호출하세요.

     arr.sort() //没有添加参数

sort() 함수는 다음 매개변수를 적용하므로 기본 비교는 유니코드 코드입니다.

    //关于sort 的可选参数
    //如果没有设置参数,v8 中会自动生成一个参数
      if (!IS_CALLABLE(comparefn)) {
           //这是默认的参数值
        comparefn = function (x, y) {
          if (x === y) return 0;
          if (%_IsSmi(x) && %_IsSmi(y)) {
            return %SmiLexicographicCompare(x, y);
          }
          //在这里 会把参数全都转换为 Unicode 在进行比较
          x = TO_STRING(x);
          y = TO_STRING(y);
          if (x == y) return 0;
          else return x < y ? -1 : 1;
        };
      }

(4) 원리
1. 매개변수를 먼저 설정하고 직접 입력하세요. 또는 기본값을 사용하세요

2. 요소 개수가 2개 미만이면 직접 반환

3. 현재 개체가 배열인지 확인합니다. 개체가 배열이 아닌 경우. 프로토타입 체인의 값이 현재 배열에 복사됩니다.

    var arry =  [1,2,3,4,2,5];
    var a = {};
    a.proto =  arry;
    a.sort() //  Array {0: 1, 1: 2, 2: 2, 3: 3, 4: 4, 5: 4}

로 정렬합니다. 4. 마지막 배열의 정의되지 않은 모든 값을

으로 정렬합니다. 5. 모든 값을 정렬합니다. undefind되지 않은 배열에서

6. 배열의 요소 개수가 10보다 작거나 같을 때 InsertionSort를 사용하여 정렬

 //comparefn  是sort 的参数
 //参数可以自己传入 ,或者使用v8 默认的值
  function InsertionSort(a, from, to) {
        for (var i = from + 1; i < to; i++) {
              var element = a[i];
              for (var j = i - 1; j >= from; j--) {
                var tmp = a[j];
                var order = comparefn(tmp, element);
                if (order > 0) {
                  a[j + 1] = tmp;
                } else {
                  break;
                }
              }
              a[j + 1] = element;
        }
  };

7. 요소 개수가 10개 이하인 경우 배열이 10보다 크면 빠른 정렬을 사용하세요

위 내용은 자바스크립트 배열 재정렬 방법에 대해 자세히 알아보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.