JavaScript の配列機能の概要_javascript スキル

WBOY
リリース: 2016-05-16 16:23:21
オリジナル
1105 人が閲覧しました

Java 言語とは異なり、JavaScript の配列には 3 つの特徴があります:

1. タイプはありません。配列のメンバーは任意の型にすることができ、同じ配列を異なる型の多数のメンバーで構成することもできます。
2. 長さは可変です。配列の長さは動的に変更できるため、JavaScript での配列アクセスに関する範囲外の問題は発生しません。
3. 不連続性。配列内のメンバーの位置は、連続的 (0、1、2、3...) または不連続の場合があります。すべての配列には、長さという名前の属性があります。配列メンバーが連続している場合、長さの値は配列メンバーの数と一致しますが、配列メンバーが不連続である場合、長さの値は配列メンバーの数より大きくなります。連続配列と比較して、不連続配列の読み取りおよび書き込みパフォーマンスは悪くなります。

実験:


コードをコピー コードは次のとおりです:

var o = [42, "サンプルテキスト", {x:88}];//JavaScript 配列は型指定されていません。
console.log(o);//[42, "サンプルテキスト", オブジェクト {x=88}]
o[3] = 27;//JavaScript 配列は動的です。
console.log(o);//[42, "サンプル テキスト", オブジェクト {x=88}, 27]
o[5] = 99;//JavaScript 配列はスパースです。
console.log(o);//[42, "サンプル テキスト", オブジェクト {x=88}, 27, 未定義, 99]


上記の例からわかるように、不連続な配列の場合、欠落しているメンバーにアクセスすると、JavaScript は未定義を返します。配列が連続していても、そのメンバーの 1 つが未定義の場合、配列にアクセスした結果は同じになります:


コードをコピー コードは次のとおりです:

var a = [42, "サンプルテキスト", {x:88}, 27, 未定義, 99];
console.log(a);//[42, "サンプル テキスト", オブジェクト {x=88}, 27, 未定義, 99]


配列が不連続でメンバーが欠落している場合と、配列が連続しているが未定義のメンバーが存在する場合、どちらの場合も、配列の内容にアクセスした結果は同じです。ただし、主に配列キーへのアクセスにおいて、この 2 つの間にはまだ微妙な違いがいくつかあります。


コードをコピー コードは次のとおりです:

console.log(4 in o);//false
console.log(4 in a);//true


これら 2 つのケースでは、コンテンツにアクセスして得られる結果は同じですが、内部メカニズムが完全に異なっていることがわかります。配列が不連続な場合、特定のメンバーが欠落しているため、そのメンバーにアクセスすると、JavaScript は未定義を返します。 ; 配列が連続の場合、すべてのメンバーが存在しますが、一部のメンバーの値は特殊であり、未定義です。

上記の例からわかるように、JavaScript の配列は本質的には数字をキーとした単なるオブジェクトであり、通常のキーと値のペアと何ら変わりません。実際、配列に対する読み取りおよび書き込み操作の際、JavaScript はパラメーターを正の整数に変換しようとします。変換が成功すると、配列操作が実行されます (配列の長さプロパティは自動的に更新されます)。失敗すると、パラメータは文字列に変換され、通常のオブジェクトに対する読み取りおよび書き込み操作が実行されます。もちろん、JavaScript インタプリタの実装では、数値をキーとして使用する配列の機能に対して多くのパフォーマンスの最適化が行われています。そのため、実際の使用では、オブジェクトのキーがすべて数値の場合は、 を直接使用します。配列オブジェクトを使用すると、より効率的な結果が得られます。

配列を定義するプロセス中、JavaScript では冗長なカンマや 2 つのカンマ間の配列メンバーの欠落を許可します。


コードをコピー コードは次のとおりです:

var x = [1,2,3,];//末尾のカンマは省略されます。
console.log(x.length);//3

var y = [1,,3];//メンバーが欠落する可能性があります。
console.log(y);//[1, 未定義, 3]
console.log(1 in y);//false
console.log(y.length);//3


配列の作成に関して、JavaScript は 4 つのメソッドをサポートしています:

1. リテラル (上記の例の括弧式など) を使用して、配列オブジェクトを直接作成します。
2. パラメータを渡さずに Array() コンストラクタを使用します。この場合、空の配列が作成され、[] と同じ効果があります。
3. Array() コンストラクターを使用し、配列の長さとして正の整数を渡します。この場合、JavaScript はこの配列を保存するために対応するメモリ空間を予約します。この時点では配列のキーが定義されていない、つまり配列内にメンバーが存在しないことに注意してください。効果は[,,,,]
と同じです 4. Array() コンストラクターを使用して、配列のメンバーを渡します。

実験:


コードをコピー コードは次のとおりです:

var z = new Array(10);//メモリを事前に割り当てますが、インデックスはまだ定義されていません。
console.log(3 in z);//false

var m = new Array(42, 33, 99, "test", {k:99});
console.log(m);//[42, 33, 99, "テスト", オブジェクト {k=99}]


ECMAScript 5 標準では、Array.isArray() を使用して、オブジェクトが配列であるかどうかを判断できます。
コードをコピー コードは次のとおりです:
Array.isArray([]);//true
Array.isArray({});//false

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート