コンピューター, プログラミング
JavaScriptのアレイおよびその作成。 JavaScriptの配列についてのすべての
この記事では、JavaScriptのアレイ、そのコンポーネントを見ていきます。 JavaScriptはプログラミングのために設計された完璧なシナリオ指向言語です。 実際には、ECMAScriptの言語(標準ECMA-262)を実装しています。
JavaScriptのか? これは、本出願にプログラムのパスを決定するために埋め込まれた言語として使用されます。 これは、ブラウザで見つけることができます:それは、インタラクティブなWebページを提供するスクリプト言語としても使用されます。
本製品の主なアーキテクチャの特徴は、動的と弱い型付け、第1の放電の対象となるavtoupravlenieメモリ理想的なプログラミング機能です。
開発は、Javaに似てますが、プログラマが使いやすい言語を作成しますので、実際には、JavaScriptで、さまざまな理由に影響を与えました。 ところで、JavaScript言語は、Web開発者によって使用されるプログラミングスタイルの数から、それは違うどのような企業や組織が所有していません。
オラクル・コーポレーション・グループの登録商標です - それは、JavaScriptのことに留意すべきです。
配列とは何ですか?
アレイと呼ばれる データのタイプ、 番号の値を格納します。 各そのような値は、アレイ成分とインデックスと呼ばれるコンポーネントを結合するから桁と呼ばれます。 型なしのJavaScriptのアレイ。 これは、固体部分には同一のアレイに属する異なる部分で、完全に異なる種類を持っているどんなタイプ、持つことができることを意味します。
また、JavaScriptのアレイは動的であり、固定サイズが宣言される必要はないと言われています。 いつでも新しいパーツを追加した後。
固体生産
非常に困難配列を作成するためにJavaScript言語を使用します。 これには二つの方法があります。 カンマで割ったアイテムのリストを、配置された内側角括弧の、 - 最初のリテラルを使用してアレイを製造することを含みます。
- VAR空= []; //空の配列。
- VaRのnumers = [4、1、2、5]。 // 5つのデジタルコンポーネントとアレイ。
- VARの差分= [1.5、偽、«テキスト "]; //異なる種類の三つの要素を持つ配列。
原則として、単純な値(行及び数)である必要はありません。 それはまた、他の例の式、、オブジェクトリテラル、他の機能および配列することができます。
配列デザイナーを作成するための第二の方法は、Array()を呼び出すことです。 3つの方法のいずれかに彼を招待するには:
- 引数なしでデザイナーを呼び出します。var B - 新しい配列()。 これは、[]空のリテラルに空の配列と同等の生成を提供します。
- VaRのB =新しいArray(1、3、5、8、「ライン»真):設計者は、明示的に配列要素の値nを指定しています。 この場合、設計者は、新しい配列成分に変換された引数のリストを提示しました。 引数は、アレイに書き込まれる示す位置です。
- さらに割り当てる値の範囲を定義します。 VAR Bは=新しいアレイ(5):これは、検出アレイを括弧で囲まれた番号を指定することによって行われます。 検出のこの方法は、割り当てアレイをプレゼンテーションに値を割り当てる可能性(その各々は未定義として表示されている)の成分の必要量を含みます。 このフォームは、通常、その長さが予め分かっているJavascriptのアレイを事前に割り当てるために使用されます。
、記録読み出し及び配列の詳細を追加
[]演算子を介してもよいアレイの構成要素に着きます。 ちなみに、JavaScriptでのすべてのコンポーネントは、ゼロから始めて、番号が付けられています。 必要な要素を得るために、その数を示し 、角括弧。 一般的なルールとして、項目を変更することができます。 JavaScriptは、アレイに追加するには、新しい値を代入するのに十分です。
JavaScriptの配列の任意の種類の任意の数の要素を格納することができることに留意すべきです。
配列の長さ
だから我々は何JavaScriptを知っています。 一般に、配列の長さは、興味深い現象です。 私たちは、より詳細に、それを考えてみましょう。 全ての範囲は、(アレイ・デザイナを使用して構築された)とリテラルアレイによって検出されたスペアリング要素の総数を引き出す特定の長さのプロパティを有します。 アレイは、(指定された不定)の詳細が不明であってもよいので、より正確な式はそう音:品質の長さは常にアレイコンポーネントの最大数(指数)よりも1つ大きいです。 品質長は新しい詳細の配列の出現で正確に滞在し、自動的に調整されています。
配列の最後の要素を表示するには、lengthプロパティを使用することができます。
最後の部分は、インデックス配列のサイズよりも小さいものです。 カウントダウンの後、最初から常に始めます。 ああ、このJavaScriptを! 配列の長さは、要素の正確な数に依存します。 - 1 v.length:あなたはそこにする必要がありますどのように多くのか分からないが、あなたは、配列の最後の要素を有効にする必要がある場合ので、レコードを適用する必要があります。
部品のアレイを反復
非常に多くの場合、lengthプロパティは、サイクルにおける部品の配列を繰り返し処理するために使用されます。
- VaRの果物= [«苺」、 "桃"、 "りんご"、 "バナナ"];
- 用(VARのI = 0; iのfruits.lenghtを<;私は++);
- document.write(果物[i]が+«...»)。
この例では、成分は連続して配置し、インデックスゼロを保持する第1部分、で開始されると思われます。 そうでない場合は、それが定義されている場合、配列の各要素を呼び出す前にチェックする必要があります。
サイクルはまた、時々コンポーネントを初期化するために使用されます。
増加と切り捨て配列
私はどのように言語JavaScriptの文字列を使用して配列にを追加するだろうか? 配列の操作の過程で、長さは長さが自動的に我々はそれを自分で世話をしなければならない理由である、品質が向上します。 単一の細部をリコールする必要がある - lengthプロパティは読み取り専用のため使用できませんが、記録のために。 電流の大きさを与える高品質の長さ属性値場合、配列は、所定の値に低減されます。 値が復元されていない - あなたは後で長さをバック返す場合でもインデックス、リクライニング、およびそれらの値の新しい範囲には含まれていない任意のコンポーネントは、失われます。
foo.length = 0:かなり単に配列をクリアします。
アレイの端部において、その現在の値よりも大きいランレングスの品質が所望のサイズに増加する新しい、未同定の成分、になる場合。
詳細の配列を削除します
delete演算子は未定義に、アレイの構成要素を示し、それは、この場合には存在し続けます。 あなたは残りの部分は空いている場所にシフトするように、アレイのJavaScriptの要素を削除したい場合は、配列を予測するための方法のいずれかを使用する必要があります。 終端コンポーネントおよび方法のスプライス() - - 一の成分または範囲どこ配列方法Array.shift()は第一の成分、ポップ()を除去します。
多次元配列
私たちが少し、理解しているようです 何JavaScriptを。 二次元配列 - さらに検討する必要があります。 あなたは、JavaScriptの配列は、他の項目の構成要素として含むことができることを覚えていますか? この機能は、多次元配列の製造に使用されます。 配列の配列内のコンポーネントを訪問することを2回ブラケットを適用するのに十分です。
連想配列
今、私たちはに商標はJavaScriptの連想配列を使用する方法を学びます。 これを行うために、我々は理論を検討する必要があります。連想配列は、時々、ハッシュテーブルと呼ばれます。 代わりに、インデックス行の彼らのおかげで、適用されます。 単純なオブジェクトのプロパティの名前を使用することを連想させるような構造を使用するが、この実施形態では、アレイ形式での作業のパフォーマンス。 JavaScriptの配列の連想を操作するのない方法がないので、彼らは通常よりもはるかに少ない頻繁に使用されています。 彼らはまだデータストレージのために有用であるとアクセスされる部品の保管を簡素化できることに留意すべきです。
出力配列
そして今、我々は、JavaScriptのシステムで勉強するのでしょうか? (画面上の)ダイアログボックスに出力配列、ならびに配列要素の出力値。
プログラムは、すべてのコンポーネントの値を表示したい場合は、ための手順を適用すると便利です。 興味深いことに、配列インデックスの成分と同時に使用するための可変カウンタルール。
クリーニング
JavaScriptの配列をフィルタリングするためには、その長さをリセットする必要があります。
- VAR MyArrayという= [1、2、5、23]。
- myArray.length = 0。
以下では、フレームワーク、JavaScriptのプロトタイプの宛先(クリア)の実装を示しています。
- クリア:関数(){。
- this.length = 0;
- これを返します。
- }。
コンポーネントの追加および削除
まあ、我々はさらに、このエキサイティングなJavaScript言語を探求し続けています。 アレイ素子できるだけ及び除去の目的および他の目的の従来の特性と同じように追加します。 しかし、いくつかの違いがあります:数値プロパティの質の長さを追加することは異なる場合がありますが、プロパティの長さの変更に数値質を排除することができます。 次のように原則的には、配列内のインストールアルゴリズムとして次のとおりです。
- 長さが等しいまたはI未満である場合、私のデジタル未知のプロパティを追加する場合、長さI + 1であると判定されます。
- あなたは、次の手順を実行するために長さの品質を変更する場合:割り当てられた値がゼロより小さい場合は、例外RangeErrorがスローされます。 新しい長さに等しく、そしてより大きい全ての数値品質インデックスを排除します。
実際には、JavaScriptの配列要素は簡単です削除します。 結局のところ、偶数の長さを設定し、それから「余分な」コンポーネントを削除する必要があります。 これは、この清掃オプションの配列から得られます。 変数は、何らかの理由で、新しい空の配列を、割り当てられている場合、満足しなかった、電流をリセットする必要があり、その品質は、ゼロの値を割り当てるために十分な長さです。
アンシフト方法、シフト、ポップとプッシュ
配列の要素が手動で変更されているという事実にもかかわらず、多くの人がこのビルトインメソッドを使用することをお勧めします。 それは、このニュアンスが、品質の正しい値と配列のパスの長さの欠如を保証しています。 ところで、正しい長さの品質は、構成要素の数に対応するであろう。
プロセスは、アレイ送信アイテムの端を押すように移動します。 バックポッププロセスは、最終的なコンポーネントを提供し、それを削除します。
一般的には、Internet Explorerで第八バージョンでアンシフトは、他のブラウザでは、undefinedを返すことができます - 長さの新しい価値を。 アンシフトからの戻り値は、より良いご希望にないように。
配列の真ん中に加え、部品の排除
あなたのJavaScriptの配列を削除したい場合は、取る必要がありますか? 方法は、署名スプライスArray.prototype.spliceを有することが知られています。
彼は、インデックスの開始から始まる、配列deleteCountコンポーネントから脱退します。 あなたが2つ以上の引数を渡す場合は、配列内のすべての後続の引数は、清算の代わりに配置されています。 スタートがマイナスであれば、撤退を再開するインデックスは、長さ+開始に等しくなります。 リモート要素のアレイに戻ると行われます。
実際には、スプライスの方法を用いて、アレイの中央からコンポーネントを削除するか、またはアレイ内の任意の場所に任意の数を追加することが可能です。
最も単純な実施形態では、必要であればiはインデックスで成分を除去するために、アレイは、パラメータiおよび1とスプライス方法を要求する必要があります。
原則として、スプライス方法で2番目のオプションは必須ではありませんが、各ブラウザに1つの引数を持つ関数の動作は異なります。
たとえば、最後のバリエーションでのFirefox、Operaで、配列の終わりまでにすべての詳細は、SafariとChromeで削除されます。
単一の成分がIEで除去されません。 第1の変形例は、オペラの挙動を予測することは不可能である - のアイテムのインデックス開始と除去される - この方法は、少なくとも2つの成分を送信するために1.したがって、それは常に必要です。
キー
もちろん、先に述べたように、JavaScriptを、連想配列を学習し、あなたも見落としてはなりません。 これは、フォーム「(キー、値)」のペアと鍵ペアの支持体の対、ならびに欠失および検索を追加する操作を保存することを可能にする、情報(データストアへのインターフェース)の抽象図です。
- FIND(キー)。
- INSERT(キー値)。
- REMOVE(キー)。
連想配列に類似したキーを持つ2つのペアを保存することができないと考えられています。 K + VVのカップルでは、キーKに関連付けられた値です。 このようなアレイの様々な実装形態において、上記の動作と意味論とここでは異なっていてもよいです。
従って、操作(キー)の値が与えられたキー、オフラインに関連付けられていることを意味し、与えられたキー、または特定のオブジェクトUNDEFに関連付けられた値を返して下さい。 他の二つのアクションは、(操作が成功したかどうかについてのデータを除く)は戻りません。
一般に、インタフェース、指数は整数ではなく、他のタイプおよび値だけでなく適用することができるような単純なアレイであって、前記のように考えられている連想配列の点で - 例えば、行。
なお、このようなアレイのための支持体は、PHP、Perlの、ルビーやPython、Tclのは、JavaScriptなどのような多くの高レベルのプログラミング言語がある扱われます。 連想配列で動作する組み込みのツールを持っていない言語では、ライブラリの形で実現の膨大な数を作成しました。
連想配列の例は、電話帳としての役割を果たすことができます。 本実施形態では、値が「F.設定されています IO +電子」、およびキー - 電話番号。 1つの電話番号は一つのマスターですが、1人が複数の番号を所有することができます。
関連付けられた拡張子
最もよく知られている拡張子は以下のものが含まれることに留意すべきです。
- EACH - すべてに«徒歩»ペアが保存されます。
- CLEAR - すべてのエントリを削除します。
- MIN - 最低のキー値とペアを見つけます。
- MAX - 最大のキー値を持つペアを見つけます。
最後の2例では、キーに比較効果を示したする必要があります。
連想配列の実現
連想配列の多くの異なる実装があります。 最も一般的な実装では、その成分のペア(値キー)である単純な配列に基づいてもよいです。 検索機能をスピードアップするためには、重要な発見により、配列の要素をアレンジして使用して実装することができますバイナリ検索を。 新鮮なレコードをパックする空のセルに登場アレイコンポーネントを「プッシュ」する必要がありますようしかし、それは、新しいペアを追加するために必要な時間の量が増加します。
別の検索ツリーに基づいて最もよく知られている実装。 例えば、典型的な読書室STL C ++言語トレーラーマップに黒とマホガニーに基づいて実現されます。 Rubyでは、スタイルは、Tclは、Pythonはハッシュテーブルの1つのタイプを使用しています。 他の実装があります。
一般的には、各実装は独自の長所と短所があります。 すべての3つの操作が平均、および(nはログ)に関するニュアンスの最悪期中に満たされたことが重要であり、nは - 現在の数はパーをセーブします。 (黒と赤の木を含む)の協調探索木のために、この条件は満たされます。
ハッシュテーブルに基づく実装において、平均時間は、探索木に基づいて、アクションよりも良好であるD(1)のように定義されることが知られています。 最悪の場合、INSERTの作用時間、O(n)と表記:もちろん、これは別々の操作の高速性能を保証するものではありません。 INSERT処理は、デューティ比が最高点に到達した長時間実行され、ハッシュテーブルインデックスを再構築する必要があります。
ところで、これらの記述は、これに基づいて、急速な追加のアクションMAX、MIN、およびすべての注文または昇順キーを降順でペアを保存し、検索するためのアルゴリズムを実行することは不可能であることを悪いハッシュ。
Similar articles
Trending Now