js配列の概要

不言
不言オリジナル
2018-07-20 15:49:301455ブラウズ

js配列のようなもの(ArrayLike)とは何ですか? js クラスの配列には length 属性があり、他の属性 (インデックス) は非負の整数です (オブジェクト内のインデックスは文字列として扱われますが、ここでは非負の整数文字列として理解できます)。配列のメソッドがあります。

例:

//类数组示例
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 の最初のパラメータは、slice が実際に呼び出される環境が 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)です, 2 番目のパラメーターは配列コレクションです。これは、デフォルトで配列をパラメーター リストに変換できる apply の賢い使い方です ([param1, param2, param3] は、そのままにすると param1、param2、param3 に変換されます)。プログラムを使用して配列の各項目をパラメータのリストに変換するには時間がかかる場合がありますが、この apply 機能を利用すると、次のような効率的な方法が得られます。

関連する推奨事項:

js の基本配列の概要 配列の長さ 配列のトラバーサル

以上がjs配列の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。