ホームページ >ウェブフロントエンド >jsチュートリアル >js配列の概要
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()。
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}
配列のような配列には同じものがないため、配列を配列として操作する方法については、クラス配列を配列に変換する方法について説明します。その後、shift、unshift、splice、slice、concat、reverse、sort などの便利で高速な強力なメソッドを呼び出すことができます。
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; }
applyメソッドを呼び出すとき、最初のパラメータはオブジェクト(this)です, 2 番目のパラメーターは配列コレクションです。これは、デフォルトで配列をパラメーター リストに変換できる apply の賢い使い方です ([param1, param2, param3] は、そのままにすると param1、param2、param3 に変換されます)。プログラムを使用して配列の各項目をパラメータのリストに変換するには時間がかかる場合がありますが、この apply 機能を利用すると、次のような効率的な方法が得られます。
関連する推奨事項:
以上がjs配列の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。