第六に、配列
1. はじめに配列
ECMAScript 配列が順序付けられたリストであり、複数の値を記憶する基準データタイプに属する集合です。その特徴は以下のとおりです。
その各々は、任意のタイプのデータを保持することができます。
アレイのサイズを動的に調整することができます。
配列アクセスまたは変更することができる長さ(また、オブジェクトの配列プロパティを長さが配列の長さの特性である、長さが配列の配列内のエントリの数を表す)に設定することにより長配列値の末尾に配列エントリを削除し、またはアレイに項目の新しいアレイを追加します。
2 の配列を作成
使用するアレイのようなArrayコンストラクタを作成するには:
VaRのARR =新しい配列();
VAR ARR =新しいアレイ(20) ; // 配列の予め指定された長さ
VAR ARR =新しいアレイ(「テリー 」、「ラリー」、「ボス」); // 配列エントリとして渡されたパラメータ
アレイの継承オブジェクト、によって配列オブジェクトコンストラクタコールは、から構成することができるアレイとも呼ばれることができる方法のプロトタイプオブジェクトメソッドプロトタイプ( ARR - > Array.prototype->のObject.prototype )。
などの配列エントリのカンマ複数によって分離された項目の配列を含む一対のブラケットで表される配列リテラルを使用してアレイを作成します。
VaRのARR = [ "テリー"、 "ラリー"、 "上司"]; // 配列を初期化
VaRのARR = [] // 空の配列
3. 検出アレイ
ウェブページまたはグローバルスコープのために、使用のinstanceof オペレータは、アレイの値かどうかを判定することができます。ページが複数のフレームが含まれている場合の異なるバージョンを複数の異なるグローバル実行環境が複数存在するように、配列コンストラクタは、これは正確に決定しません。この問題を解決するために、ECMAScript5は追加Array.isArray()など、判断する方法を:
= [] ARRました。
typeof演算(ARR)。//オブジェクト
//真のinstanceof配列arrに同じグローバルスコープの下で、裁判官にそう
Array.isArray(ARR); // trueに、決定ARR 型が配列であるかどうか
4. アクセスアレイ
よる「配列変数[ インデックス] アレイにアクセスするための」インデックスは、対応するエントリの戻り値配列の長さ未満である場合、インデックスは、配列の長さよりも大きい場合、配列は自動的にインデックス値プラスに加算されるから配列インデックスので、長さ(0 スタート)(アレイまで含んでいてもよい4,294,967,295 アレイアイテム)、および値は不定、例えば:
VaRのARR = [ "テリー"、 "ラリー"、 "上司"]。
ARR [0]; //は、配列の最初の要素にアクセスし、戻り値テリー
ARR [3] =「ジャッキー」 ; // 要素を追加し、アレイの範囲となる 4
([ "テリー"、 "ラリー"、 "上司"、 "ジャッキー"])
ARR [9]; // 第一の配列のアクセス 10個の要素を、戻り値は未定義
あなたはできるループの使用のような配列を通じて声明を:
{(; iはarr.lengthを<I ++がVAR I = 0)のための
選択の=のARR [i]のでした
console.log(ヴァル)。
}
{(ARRでVARキー)のために
VaRのヴァル・=のARR [キー]
}
5. スタックとキューを介して操作配列エントリの操作
スタック(最終)操作:
プッシュ()はそれらをアレイの一端ずつを追加するために、パラメータの任意のタイプを受け付け、配列の長さを返し、要素のパラメータはスタックにプッシュされるように、戻り値は長さの配列であります
ポップ()は、配列の還元、アレイの端から最後を除去する長さ除去項目戻り、値、パラメータなし、スタックの要素の戻り値を
キュー(FIFO)操作:
シフトは、()配列マイナス1の長さが、アレイとリターンの最初の項目を削除し、パラメータなし、戻り値は要素デキュー
抜き()配列の前端には、任意の数のエントリを追加し、配列の新しい長さを返すために割込みキューの長さの後に値を返し、キューをジャンプする、要素パラメータ
6. 採取アレイ
CONCAT():配列のステッチ。このコピーの終わりに現在の配列、その後、受信したパラメータのコピーを作成し、バックに戻ってコピーし、元の配列は変更されません。
スライス():配列カット。受信されたパラメータ(エンド開始(オプション))、受信のみが起動時に、返しから開始位置を指定した開始配列の最後までのすべての現在 ; 場合受信開始と終了時刻を、戻って開始する端の間にアイテムが、含まれていない端アイテムの位置を、元の配列を変更しません。
スプライス():配列の変更。次のように具体的な用途は以下のとおりです。
削除:二つのパラメータ(、削除するアイテムの数を削除開始位置)
挿入:3つのパラメータが指定されている(開始位置0を、任意の数の項目を挿入します)
あるいは:3つのパラメータが指定されている(する、開始位置を交換し、挿入する項目の任意の数の項目を)
7. ソートされた配列
逆() :順序は配列アイテムを逆にしてもよいです
並べ替え() :デフォルトのソートは、アレイ内の各項目に対して呼び出されるのtoString()メソッド、およびその後の文字の順序に従ってソート。
比較(の関数として許容されるカスタムソートパラメータソート(コンパレータ))、二つのパラメータが存在する比較関数(A、B)(比較、降順のソートがある)は最初のパラメータは、(より低い第2パラメータの後に位置する場合二番目のパラメータ)、および以下のように、最初のパラメータ(第2パラメータがより大きい)、または負の数(ホールド)場合に、第2のパラメータの前に位置する正の数(交換)を返します。
【3,12,29,8,32,4] = ARRました。
arr.sort(関数(a、b)は{
IF(<B){
1を返します。
}他{
-1を返します。
}
});
console.log(ARR)。// [32、29、12、8、4、3]
8. 反復配列
すべての() :関数指定された配列の操作の各機能は、各項目に対して返した場合はtrueに、関数の実行結果が値を返すtrueに、例えば:
【11,5,23,7,4,1,9,1] = ARRました。
VaRの結果= arr.every(関数(項目、インデックス、ARR){
アイテム> 2を返します。
});
console.log(結果); // falseに、配列の存在は、以下である 2つのアイテム
いくつかの():各アレイのためのエントリ、関数は、指定された機能を実行している場合が有するいずれかの意味をに戻る真を、次いで、機能の実行結果を返す:のような、真
【11,5,23,7,4,1,9,1] = ARRました。
VaRの結果= arr.some(関数(項目、インデックス、ARR){
アイテム> 2を返します。
});
console.log(結果); // trueが、大きな配列があるで 2つのアイテム
フィルタ():各配列のためのエントリの操作機能を与えられた、機能を満足する項目から成る配列を返しなどを。
【11,5,23,7,4,1,9,1] = ARRました。
VaRの結果= arr.filter(関数(項目、インデックス、ARR){
アイテム> 2を返します。
});
console.log(結果); [11 ,. 5、23 ,. 7 ,. 4 ,. 9] // 、これらのアイテムの配列は、より大きい 2
地図():各配列のためのエントリの機能を特定の操作、それは各呼び出し返しのアレイの結果の関数を次のような、
【11,5,23,7,4,1,9,1] = ARRました。
VaRの結果= arr.map(関数(項目、インデックス、ARR){
アイテム* 2を返します。
});
console.log(結果); // [22、46、10である14 ,. 8、2、18、2、である] 、全アレイ 2 * 結果のアレイ
forEachの():各配列のためのエントリの機能を与えられた動作、要素を横断するために使用される戻り値が存在しないように、:
VaRの結果= arr.forEach(関数(項目、インデックス、ARR){
console.log(アイテム)
});
9. シリアライズされた配列
toString()は次のようなデフォルトでは、カンマで区切られた文字列の形で配列にエントリを返します。
VaRのARR = [ "テリー"、 "ラリー"、 "上司"]。
arr.toString(); //テリー、ラリー、ボス
)(参加:のような別の文字列に指定された文字列配列を、。
VaRのARR = [ "テリー"、 "ラリー"、 "上司"]。
arr.join( "||"); //テリー|| ||ラリー・ボス
10. アレイ部分再構成法
( 1 )アナログプッシュ() 、として再構築mypush()コード。
Array.prototype.myPush =関数(){
VAR LEN = this.length; // 2
(引数でVARキー){のために
VAR項目=引数[キー]。
この[LEN +(+キー) ] =項目; // のストリング鍵に変換数
}
this.lengthを返します。
}
【3,12,29,8,32,4] = ARRました。
VaRの結果= arr.myPush( "テリー"、 "ラリー"、 "トム")
console.log(その結果、ARR)。// 9 [3,12,29,8,32,4、 "テリー"、 "ラリー"、 "トム"]
編曲2であっ= [3,12,29,8,32,4]。
VAR結果2 = arr2.push( "テリー"、 "ラリー"、 "トム")。
console.log(結果2、ARR2)。// 9 [3,12,29,8,32,4、 "テリー"、 "ラリー"、 "トム"]
( 2 )シミュレーションPOP()として再構築、myPop()コード。
Array.prototype.myPop =関数(){
VARデル=この[this.length - 1]。
this.length - = 1;
デルを返します。
}
【3,12,29,8,32,4] = ARRました。
VaRの結果= arr.myPop()。
console.log(その結果、ARR)。// 4 [3,12,29,8,32]
編曲2であっ= [3,12,29,8,32,4]。
た結果2 arr2.pop =();
console.log(結果2、ARR2)。// 4 [3,12,29,8,32]
( 3 )アナログシフト()として再構築、myShift()コード。
Array.prototype.myShift =関数(){
VARデル=この[0]。
this.splice(0,1)。
デルを返します。
}
【3,12,29,8,32,4] = ARRました。
結果であった= arr.myShift();
console.log(その結果、ARR)。// 3 [12,29,8,32,4]
編曲2であっ= [3,12,29,8,32,4]。
VAR結果2 = arr2.shift()。
console.log(結果2、ARR2)。// 3 [12,29,8,32,4]
( 4 )シミュレート抜き()として再構築、myUnshift()コード。
Array.prototype.myUnshift =関数(){
(引数でVARキー){のために
this.splice(鍵、0、引数[キー])。
}
this.lengthを返します。
}
【3,12,29,8,32,4] = ARRました。
VaRの結果= arr.myUnshift( "テリー"、 "ラリー"、 "トム")
console.log(その結果、ARR)。// 9 [ "テリー"、 "ラリー"、 "トム"、3,12,29,8,32,4]
編曲2であっ= [3,12,29,8,32,4]。
VAR結果2 = arr2.unshift( "テリー"、 "ラリー"、 "トム")。
console.log(結果2、ARR2)。// 9 [ "テリー"、 "ラリー"、 "トム"、3,12,29,8,32,4]