1.アレイを理解します
配列は特定の種類のデータのコレクションであり、データ型は整数、文字列、またはオブジェクトです。
JavaScriptは多次元配列をサポートしていませんが、配列にはオブジェクト(配列もオブジェクト)を含めることができるため、アレイは互いにネストすることで多次元配列と同様の関数を実現できます。
1.1配列の定義
10の要素を持つ配列を宣言します。
コードコピーは次のとおりです。vara = new Array(10);
この時点で、10個の要素を含むAのメモリ空間が開かれ、たとえば[2]などの配列名プラス[添え字]で呼び出されましたが、この時点では要素が初期化されず、コールは未定義です。
次のコードは、変数配列を定義し、値を割り当てます。
コードコピーは次のとおりです。
var a = new Array();
a [0] = 10;
a [1] = "aaa";
a [2] = 12.6;
上記のように、次のコードなど、オブジェクトを配列に配置できます。
コードコピーは次のとおりです。
var a = new Array();
a [0] = true;
a [1] = document.getElementById( "text");
a [2] = {x:11、y:22};
a [3] = new Array();
たとえば、インスタンス化された場合、アレイは直接割り当てることもできます。
コードコピーは次のとおりです。
var a = new Array(1、2、3、4、5);
var b = [1、2、3、4、5];
AとBはどちらも配列ですが、Bは暗黙の宣言を使用し、別のインスタンスを作成します。この時点で、アラート(a == b)が使用されると、falseがポップアップされます
1.2多次元配列
実際、JavaScriptは多次元配列をサポートしていません。 ASPでは、DIM A(10,3)を使用して、多次元配列を定義できます。 JavaScriptでは、var a = new Array(10,3)を使用する場合、エラーを報告します。
ただし、前述のように、配列にはオブジェクトを含めることができるため、配列内の要素は配列として宣言できます。たとえば、:
コードコピーは次のとおりです。
var a = new Array();
a [0] = new Array();
a [0] [0] = 1;
アラート(a [0] [0]); //ポップ1
宣言されたときに値を割り当てます
コードコピーは次のとおりです。
var a = new Array([1,2,3]、[4,5,6]、[7,8,9]);
var b = [[1,2,3]、[4,5,6]、[7,8,9]];
同じ効果は、Aが従来のインスタンス化を使用し、Bは暗黙の宣言であり、結果は多次元配列です。
1.3配列リテラル
私はそれが中国語で何と呼ばれているのか本当にわかりません、テキスト配列?
配列といえば、配列リテラルについて話さなければなりません。配列は実際には特別なオブジェクトです。オブジェクトには、一意のプロパティとメソッドがあります。値と呼び出しは、オブジェクト名、属性、オブジェクト、およびメソッド()を介して取得されますが、配列はサブスクリプトを使用して値を取得します。配列リテラルは配列に非常に似ており、特定のデータ型のコレクションです。ただし、配列リテラルは基本的にオブジェクトであり、宣言と呼び出しは配列とは異なります。
コードコピーは次のとおりです。
var aa = new object();
aa.x = "cat";
aa.y = "sunny";
アラート(aa.x); //猫をポップアップします
シンプルなオブジェクトを作成します。一般的な呼び出しは、aa.xを介して行われます。それがアレイリテラルとして扱われる場合、猫はアラートでポップアップします(aa ["x"])
コードコピーは次のとおりです。
var a = {x: "cat"、y: "sunny"};
アラート(a ["y"]); //ポップアップサニー
これはオブジェクトを作成する別の方法であり、結果は同じです
2。配列要素の操作
上記のように、要素は配列を介して読み書きできます[subscript]
サブスクリプトの範囲は0(23(SuperScript 2)-1)です。サブスクリプトがネガティブ、フローティングポイント、さらにはブール値さえある場合、アレイはオブジェクトタイプに自動的に変換されます。たとえば、:
コードコピーは次のとおりです。
var b = new Array();
b [2.2] = "xxxxx";
アラート(B [2.2]); //-> xxxxx
現時点では、B ["2.2"] = "xxxxx"に相当します。
2.1配列のループ
コードコピーは次のとおりです。
var a = [1,2,3,4,5,6];
for(var i = 0; i <a.length; i ++){
アラート(a [i]);
}
これは最も一般的に使用されるものです。配列を通過した後、コードは順番に1〜6ポップアップ表示されます。
一般的に使用される別のものがあります:
コードコピーは次のとおりです。
var a = [1,2,3,4,5,6];
for(a in a){
アラート(e);
}
または、1〜6を順番にポップアップします。 for ... inは、オブジェクトを通過するオブジェクト(配列は特別なオブジェクトです)で、配列で使用されます。配列には属性名がないため、値は直接出力されます。この構造ステートメントは、たとえばオブジェクトで使用されます。
コードコピーは次のとおりです。
var a = {x:1、y:2、z:3};
for(a in a){
アラート(e + ":" + a [e]);
}
この時点で、Eは属性名、つまりx、y、xを取得します。値を取得するには、配列名[属性]が使用されるため、[e]は["x"]、a [y "]、a [z"]、a ["z"]に相当します。
2.2配列で一般的に使用される関数
concat
既存の配列の後に配列を追加し、既存の配列に影響を与えずに新しい配列を返します。
コードコピーは次のとおりです。
var a = [123];
var b = "sunnycat";
var c = ["www"、21、 "ido"];
var d = {x:3.14、y: "sk"};
var e = [1,2,3,4、[5,6、[7,8]]];
アラート(A.concat(b)); //-> 123、Sunnycat
アラート(a); //-> 123
アラート(b.concat(c、d)); //-> Sunnycatwww、21、ido [オブジェクトオブジェクト]
アラート(c.concat(b)); //-> www、21、Ido、Sunnycat
Alert(E.Concat(11,22,33).Join( "#")); // - > 1#2#3#4#5,6,7,8#11#22#33
配列または文字列にのみ使用できることに注意する必要があります。接続(a)が数値、ブール値、またはオブジェクトである場合、エラーが報告されます。文字列が配列に接続されている場合、文字列は配列の最初の要素とともに新しい要素にスプライスされ、接続された文字列が文字列に追加されます(この理由がわかりません。情報に精通している場合は開示してください)。配列とオブジェクトを含むものの場合は、接続後に同じままにしてください。
参加する
指定されたスペーサーで配列を文字列に接続します。
コードコピーは次のとおりです。
var a = ['a'、 'b'、 'c'、 'd'、 'e'、 'f'、 'g'];
lert(a.join( "、")); // - > a、b、c、d、e、f、gはa.tostring()に相当します
アラート(A.Join( "x")); //-> axbxcxdxexfxg
これは理解しやすいですが、1次元アレイにのみ変換されることに注意する必要があります。配列に配列がある場合、Joinで指定された文字列を使用するのではなく、たとえばデフォルトのtoString()を使用します。
コードコピーは次のとおりです。
var a = ['a'、 'b'、 'c'、 'd'、 'e'、 'f'、 'g'、[11,22,33]];
アラート(a.join( " *")); //-> a * b * c * d * e * f * g * 11,22,33
注:配列内の配列は *接続には使用されません
ポップ
配列の最後の要素を削除し、要素を返します
コードコピーは次のとおりです。
var a = ["aa"、 "bb"、 "cc"];
document.write(a.pop()); //-> cc
document.write(a); //-> aa、bb
注:配列が空の場合、未定義が返されます。
押す
配列の後ろに配列を追加し、配列の新しい長さを返します
コードコピーは次のとおりです。
var a = ["aa"、 "bb"、 "cc"];
document.write(a.push( "dd")); //-> 4
document.write(a); //-> aa、bb、cc、dd
document.write(a.push([1,2,3])); //-> 5
document.write(a); // - > aa、bb、cc、dd、1,2,3
concatとの違いは、concatが元の配列に影響を与えず、新しい配列を直接返すことですが、プッシュはアレイの新しい長さを返す元の配列を直接変更します。
選別
配列ソート、まず例を見てみましょう
コードコピーは次のとおりです。
var a = [11,2,3,3345,5654,654、 "asd"、 "b"];
alert(a.sort()); //-> 11,2,3,3,345,5654,654、ASD、b
結果は非常に驚くべきことですか?はい、ソートは整数のサイズに基づいているのではなく、最初の文字のANSIコードを比較するための文字列比較に基づいており、小さなものは前にあります。同じことが当てはまる場合、2番目の文字が比較されます。整数値に応じて比較したい場合は、これを行うことができます。
コードコピーは次のとおりです。
var a = [11,2,3,3345,5654,654];
a.sort(function(a、b){
a -bを返します。
});
アラート(a); // - > 2,3,11,654,5654,33445
sort()メソッドにはオプションのパラメーターがあります。これはコードの関数です。これは簡単な例です。非数字をソートすることはできません。数字以外はもっと判断する必要があるので、ここでは話しません。
逆行する
配列とsort()を逆に並べ替え、最初の文字ASCII値を取得して比較します
コードコピーは次のとおりです。
var a = [11,3,5,66,4];
alert(a.Reverse()); //-> 4,66,5,3,11
配列にも配列が含まれている場合、オブジェクトとして処理されている場合、要素は解決しません。
コードコピーは次のとおりです。
var a = ['a'、 'b'、 'c'、 'd'、 'e'、 'f'、 'g'、[4,11,33]];
alert(a.Reverse()); // - > 4,11,33、g、f、e、d、c、b、a
アラート(a.join( " *")); // - > 4,11,33 * g * f * e * d * c * b * a
4、11、33は完全なオブジェクトの比較と見なされるため、最初にランク付けされるため、最後の11である必要があります。
理解できない場合は、join()を使用してそれをひもで締めると、もっと明白になります
シフト
配列の最初の要素を削除し、POPに似た要素を返します
コードコピーは次のとおりです。
var a = ["aa"、 "bb"、 "cc"];
document.write(a.shift()); //-> aa
document.write(a); //-> BB、CC
注:アレイが空の場合、未定義が返されます。
Unshift
シフトとは対照的に、アレイの前面に要素を追加し、アレイの新しい長さを返します。
コードコピーは次のとおりです。
var a = ["aa"、 "bb"、 "cc"];
document.write(a.unshift(11)); //-> 4注:未定義はIEで返されます
document.write(a); //-> 11、AA、BB、CC
document.write(a.unshift([11,22])); //-> 5
document.write(a); //-> 11,22,11、AA、BB、CC
document.write(a.unshift( "cat")); //-> 6
document.write(a); //->猫、11,22,11、AA、BB、CC
この方法に注意してください。未定義はIEで返されます。IEはMicrosoftのバグのようです。 Firefoxの下でアレイの新しい長さを正しく再生できます。
スライス
アレイフラグメントを返します
コードコピーは次のとおりです。
var a = ['a'、 'b'、 'c'、 'd'、 'e'、 'f'、 'g'];
アラート(A.Slice(1,2)); //-> b
アラート(A.Slice(2)); //-> c、d、e、f、g
アラート(a.slice(-4)); //-> d、e、f、g
アラート(A.Slice(-2、-6)); //->空
a.slice(1,2)、subscriptからsubscriptからsubscriptから2は2です。サブスクリプトのある要素は含まれていないことに注意してください。
パラメーターが1つしかない場合、デフォルトは配列の最後にあります
-4は最後の4番目の要素を表すため、カウントダウンの4つの要素が返されます
最後の行は2番目から最後まで始まります。後で傍受されるため、前の要素を取得することは明らかに不可能であるため、空の配列を返します。 A.Slice(-6、-2)に変更された場合、B、C、D、eを返します
スプライス
配列からフラグメントの要素を削除し、削除された要素を返します
コードコピーは次のとおりです。
var a = [1,2,3,4,5,6,7,8,9];
document.write(a.splice(3,2)); // - > 4,5
document.write(a); //-> 1,2,3,6,7,8,9
document.write(a.splice(4)); //-> 7,8,9注:IEで空に戻します
document.write(a); //-> 1,2,3,6
document.write(a.splice(0,1)); //-> 1
document.write(a); //-> 2,3,6
document.write(a.splice(1,1、["aa"、 "bb"、 "cc"])); //-> 3
document.write(a); // - > 2、AA、BB、CC、6,7,8,9
document.write(a.splice(1,2、 "ee")。join( "#")); //-> aa、bb、cc#6
document.write(a); //-> 2、EE、7,8,9
document.write(a.splice(1,2、 "cc"、 "aa"、 "tt")。join( "#")); //-> EE#7
document.write(a); //-> 2、CC、AA、TT、8,9
この方法はIEにあることに注意してください。 2番目のパラメーターが必要です。満たされていない場合、デフォルトは0になります。たとえば、a.splice(4)、IEでは空に戻ります。効果はa.splice(4,0)に相当します
ToString
配列だけでなく、すべてのオブジェクトがこの方法を使用できます。
コードコピーは次のとおりです。
var a = [5,6,7,8,9、["a"、 "bb"]、100];
document.write(a.toString()); // - > 5,6,7,8,9、a、bb、100
var b = new date()
document.write(b.toString()); //-> SAT 8月8日17:08:32 UTC+0800 2009
var c = function(s){
アラート(s);
}
document.write(c.toString()); //-> function(s){alert(s); }
ブール値はtrueまたはfalseを返し、オブジェクトオブジェクト名を返します]
join()メソッドと比較して、join()は1次元配列のみを置き換えますが、toString()はアレイ全体を完全に平面化します(1次元または多次元に関係なく)。
同時に、この方法は、小数、バイナリ、Ength、および16進変換に使用できます。たとえば、:
コードコピーは次のとおりです。
var a = [5,6,7,8,9、 "a"、 "bb"、100];
for(var i = 0; i <a.length; i ++){
document.write(a [i] .tostring() + "binary is" + a [i] .tostring(2) + "、octal is" + a [i] .tostring(8) + "、hexadecimal is" + a [i] .tostring(16)); // - > 4,5
}
出力結果:
コードコピーは次のとおりです。
5のバイナリは101、オクタルは5、六分位数は5です
6のバイナリは110、オクタルは6、六分位数は6です
7のバイナリは111、オクタルは7、六分位数は7です
8のバイナリは1000、オクタルは10、六分位数は8です
9のバイナリは1001、オクタルは11、六分位数は9です
aのバイナリはa、octalはa、六分位は
BBのバイナリはBB、OctalはBB、六分位はBBです。
100のバイナリは1100100、オクタルは144、六分位数は64です。
変換は要素でのみ実行できます。配列全体が変換されると、配列はそのまま返されます。
Tolocalestring
主に日付オブジェクトで使用されるローカルフォーマット文字列を返します
コードコピーは次のとおりです。
var a = new date();
document.write(a.toString()); //-> SAT 8月8日17:28:36 UTC+0800 2009
document.write(a.tolocalestring()); //-> 2009年8月8日17:28:36
document.write(a.tolocaledatestring()); //-> 2009年8月8日
違いは、toString()が標準形式を返し、tolocalestring()が[時間]および[長い日付]形式を変更することにより、ローカル形式の完全な日付([コントロールパネル] >> [領域および言語オプション)を返すことです。
Valueof
異なるオブジェクトに従って異なる元の値を返します。出力に使用すると、toString()に似ています。ただし、toString()は文字列タイプを返し、valueof()は元のオブジェクトタイプを返します
コードコピーは次のとおりです。
var a = [1,2,3、[4,5,6、[7,8,9]]];
var b = new Date();
var c = true;
var d = function(){
アラート( "Sunnycat");
};
document.write(a.valueof()); // - > 1,2,3,4,5,6,7,8,9
document.write(typeof(a.valueof())); //->オブジェクト
document.write(b.valueof()); //-> 1249874470052
document.write(typeof(b.valueof())); //->番号
document.write(c.valueof()); //-> true
document.write(typeof(c.valueof())); //-> boolean
document.write(d.valueof()); // - > function(){alert( "Sunnycat"); }
document.write(typeof(d.valueof())); //->関数
配列はオブジェクトでもあるため、typeof(a.valueof())はオブジェクトを返し、返された多次元配列はまだ
コードコピーは次のとおりです。
var a = [1,2,3、[4,5,6、[7,8,9]]];
var aa = a.valueof();
document.write(aa [3] [3] [1]); //-> 8
日付オブジェクトは、1970年1月1日からミリ秒数を返し、数学とエラーオブジェクトには価値がありません。