JAvascriptのArrayオブジェクト
3737 ワード
Javaや.NETを使用したことがある人は、ダイナミック配列クラスArray(または類似のクラス)に慣れていないと信じています.このクラスはメリットが多く、より多くのコンテンツを収容するために長さの範囲を無限に拡張することができます.実はjavaにもArrayオブジェクトがあり、ほとんど万能です.
【一】動的配列が使用される場合:
これは最も基本的なArrayの使用方法です.Arrayオブジェクトには3つのコンストラクション関数があります.
new Array();new Array(size);new Array(element0, element1, ..., elementn);
1つ目は空のArrayを指定し、2つ目は長さのArrayを指定し、最後にデータ初期化の長さといくつかの内容を直接埋め込むArrayを指定します.いずれにしても、足りなくなったら中に直接データを追加することができます.データを追加する方法は、次のとおりです.
ArrayInstance[インデックス番号、0から]=内容;
もちろんforでループすることもできます(javascriptにはintという明示的な宣言のタイプはありません.すべて弱いタイプのvarです)
またforeach方式を使用することもできます(javascriptにforeachがないのか、forの方式を使うのか、javaのようなfor(変数in集合)もあります)
以上の方法の出力は驚くべき発見があります--意外にも0、1、2で1ではありませんて、2、3!Why?ここでC#またはjavaと最大の違いは、C#またはjavaがforeachをIEnumeratorインタフェースオブジェクトと理解し、パッケージの内部データにアクセスすることである.しかしjsでは、インデックスの内容ではなくインデックス番号にしかアクセスできないため、正しい方法は次のとおりです.
さらに、配列を初期化することもできます.
var arr=[1,2,3,......,内容];
【辞書として使用する】
下付き文字は必ずしも数字ではありません(デフォルト0から)、Arrayは下付き文字を直接カスタマイズすることができます.これにより、Dictionaryを使用したことがある人は花を咲かせます.
ただし、このときarr.lengthを用いて検出した結果は0であることに注意してください.Why?これらはjsの真の下付き文字ではなく属性であるため,属性はarrの長さの列には含まれず,0,1,2......という下付き文字のみが計算される.
これらのプロパティメソッドをループするのは、インデックスをループするのと同じです(forバージョンのforeachを使用します).
以前、辞書で使用する場合、属性は下付きではないと言いましたが、属性と下付きの違いは何ですか.一般的に、js構文は非常に緩やかで、属性は「定義」を必要とせずに「使用」し、既存のメソッドクラス(オブジェクト、本当の意味でのクラスではない)に対してエッジ操作を動的に追加することができます.
太字部分を见るとわかりますが、実はこれはjsの文法范畴の问题です.Arrayはオブジェクトとしても操作できます.いずれのjsオブジェクトでも操作できますが、そのオブジェクトはnewで操作しなければなりません.直接调用することはできません.(例えばMyFun.B)
また、この「辞書型」の動作はjsonに匹敵するため、辞書型の初期化は以下のことを可能にする.
var変数名={"キー1":"値1","キー2":"値2",...,"キーn":"値n"};
for版のようなforeachにアクセスし、キー値ペアを動的に追加できます.
【一】動的配列が使用される場合:
これは最も基本的なArrayの使用方法です.Arrayオブジェクトには3つのコンストラクション関数があります.
new Array();new Array(size);new Array(element0, element1, ..., elementn);
1つ目は空のArrayを指定し、2つ目は長さのArrayを指定し、最後にデータ初期化の長さといくつかの内容を直接埋め込むArrayを指定します.いずれにしても、足りなくなったら中に直接データを追加することができます.データを追加する方法は、次のとおりです.
ArrayInstance[インデックス番号、0から]=内容;
もちろんforでループすることもできます(javascriptにはintという明示的な宣言のタイプはありません.すべて弱いタイプのvarです)
for(var i= ;i<arrayInstance.length;++i)
{
alert(arrayInstance[i]);
}
またforeach方式を使用することもできます(javascriptにforeachがないのか、forの方式を使うのか、javaのようなfor(変数in集合)もあります)
var arr = new Array(1, 2, 3);
for (var i in arr) {
alert(i);
}
以上の方法の出力は驚くべき発見があります--意外にも0、1、2で1ではありませんて、2、3!Why?ここでC#またはjavaと最大の違いは、C#またはjavaがforeachをIEnumeratorインタフェースオブジェクトと理解し、パッケージの内部データにアクセスすることである.しかしjsでは、インデックスの内容ではなくインデックス番号にしかアクセスできないため、正しい方法は次のとおりです.
var arr = new Array(1, 2, 3);
for (var i in arr) {
alert(arr[i]);
}
さらに、配列を初期化することもできます.
var arr=[1,2,3,......,内容];
【辞書として使用する】
下付き文字は必ずしも数字ではありません(デフォルト0から)、Arrayは下付き文字を直接カスタマイズすることができます.これにより、Dictionaryを使用したことがある人は花を咲かせます.
var arr = new Array();
arr["a"] = "a";
arr["b"] = "b";
ただし、このときarr.lengthを用いて検出した結果は0であることに注意してください.Why?これらはjsの真の下付き文字ではなく属性であるため,属性はarrの長さの列には含まれず,0,1,2......という下付き文字のみが計算される.
これらのプロパティメソッドをループするのは、インデックスをループするのと同じです(forバージョンのforeachを使用します).
以前、辞書で使用する場合、属性は下付きではないと言いましたが、属性と下付きの違いは何ですか.一般的に、js構文は非常に緩やかで、属性は「定義」を必要とせずに「使用」し、既存のメソッドクラス(オブジェクト、本当の意味でのクラスではない)に対してエッジ操作を動的に追加することができます.
function MyFun() {
this.A = "a";
}
var mf = new MyFun();
mf.B = "B"; mf["C"] = "C";
alert(mf.B);
alert(mf.C);
alert(mf.A);
太字部分を见るとわかりますが、実はこれはjsの文法范畴の问题です.Arrayはオブジェクトとしても操作できます.いずれのjsオブジェクトでも操作できますが、そのオブジェクトはnewで操作しなければなりません.直接调用することはできません.(例えばMyFun.B)
また、この「辞書型」の動作はjsonに匹敵するため、辞書型の初期化は以下のことを可能にする.
var a = { "A": "A","B":"B" };
var変数名={"キー1":"値1","キー2":"値2",...,"キーn":"値n"};
for版のようなforeachにアクセスし、キー値ペアを動的に追加できます.