>  기사  >  웹 프론트엔드  >  js 배열 소개

js 배열 소개

不言
不言원래의
2018-07-20 15:49:301399검색

js 배열(ArrayLike)이란 무엇인가요? js 클래스 배열에는 길이 속성이 있고 기타 속성(인덱스)은 음수가 아닌 정수입니다(객체의 인덱스는 문자열로 처리되지만 여기서는 음수가 아닌 정수 문자열로 이해할 수 있습니다). 배열의 메소드를 가지고 있습니다.

예:

//类数组示例
var a = {'1':'gg','2':'love','4':'meimei',length:5};
Array.prototype.join.call(a,'+');//'+gg+love++meimei'//非类数组示例
var c = {'1':2};   //没有length属性就不是类数组

JavaScript의 일반적인 클래스 배열에는 인수 개체와 DOM 메서드의 반환 결과가 포함됩니다.
예: document.getElementsByTagName().

1. 객체가 배열 유사 객체인지 확인

function isArrayLike(o) {    
if (o &&                                // o is not null, undefined, etc.
        typeof o === 'object' &&            // o is an object
        isFinite(o.length) &&               // o.length is a finite number
        o.length >= 0 &&                    // o.length is non-negative
        o.length===Math.floor(o.length) &&  // o.length is an integer
        o.length < 4294967296)              // o.length < 2^32
        return true;                        // Then o is array-like
    else
        return false;                       // Otherwise it is not}

2. js 유사 배열을 배열로 변환한 다음 작업을 수행하면 어떤 이점이 있나요? 배열을 배열로 작동하는 방법에 대해서는 클래스 배열을 배열로 변환하는 방법에 대해 설명합니다. 그런 다음 편리하고 빠른 Shift, Unshift, Splice, Slice, Concat, Reverse, Sort 등과 같은 강력한 메서드를 호출할 수 있습니다.

3. js 클래스 배열을 배열 메소드로 변환

Array.prototype.slice.call(arrayLike)
//将arguments转化为数组后,截取第一个元素之后的所有元素
  var args = Array.prototype.slice.call(arguments,1);

먼저 Array.prototype.slice.call(arrayLike)의 결과는 arrayLike 객체를 Array 객체로 변환하는 것입니다. 따라서 나중에

Array.prototype.slice.call(arrayLike).forEach(function(element,index){  //可以随意操作每一个element了 })

와 같이 배열의 메소드를 직접 호출할 수 있습니다. (1) Array.prototype.slice는 배열의 프로토타입에 있는 슬라이스 메소드를 나타냅니다. 이 슬라이스 메소드는 Array 유형 객체를 반환합니다.

//slice的内部实现Array.prototype.slice = function(start,end){  
      var result = new Array();  
      start = start || 0;  
      end = end || this.length; //this指向调用的对象,当用了call后,能够改变this的指向,也就是指向传进来的对象,这是关键  
      for(var i = start; i < end; i++){  
           result.push(this[i]);  
      }  
      return result;  
 }

(2) call을 호출할 수 있는 유일한 방법은 [].call을 사용할 수 없고, [].slice를 사용해야 합니다. call의 첫 번째 매개변수는 실제로 슬라이스가 호출되는 환경이 arrayLike 객체가 됨을 나타냅니다. 따라서 arrayLike에도 배열 메서드가 있는 것과 같습니다.

(3) js 클래스 배열을 배열로 변환하는 일반 함수

var toArray = function(s){  
    try{  
        return Array.prototype.slice.call(s);  
    } catch(e){  
            var arr = [];  
            for(var i = 0,len = s.length; i < len; i++){  
                //arr.push(s[i]);  
                 arr[i] = s[i];     //据说这样比push快            }  
             return arr;  
    }

4가 첨부되어 있습니다. 배열을 매개변수 목록(클래스 배열)으로 변환

apply 메소드 호출 시 첫 번째 매개변수는 객체(this)입니다. , 두 번째 매개변수는 배열 컬렉션입니다. 여기에는 기본적으로 배열을 매개변수 목록으로 변환할 수 있는 Apply의 영리한 사용이 있습니다([param1, param2, param3]는 param1, param2, param3으로 변환됩니다). 프로그램을 사용하여 배열의 각 항목을 매개변수 목록으로 변환하는 데 시간이 걸릴 수 있습니다. 이 적용 기능을 사용하면 다음과 같은 효율적인 방법을 얻을 수 있습니다.

관련 권장 사항:


js 기본 배열 개요 배열 길이 배열 순회

위 내용은 js 배열 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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