JavaScriptの配列に関する知識を詳しく説明する.
5204 ワード
行列の作成
jsの配列の声明には、次のような方法があり得る. 第3の方法は配列の長さを宣言しているが,実際には配列長は可変である.つまり、長さ5を指定しても、要素を所定の長さ以外に記憶することができます.このとき、配列の長さは変わります. また、明確な点が必要です. jsは弱いタイプの言語で、つまり配列の中の要素のタイプは同じではありません. 配列内の要素のタイプが一致しない例を挙げます.
JavaScript配列のインデックス値も0から始まります.直接に配列名+下付きで配列要素にアクセスできます.
サンプルコードは以下の通りです.
巡回配列の例コードは以下の通りです.
上記のコードの中で、1つの小さい最適化は、事前に配列のサイズを取得することにあり、このように、毎回巡回して配列サイズを調べる必要がない.超大型配列にとっては、一定の効率が向上します.
配列要素を追加
三つの方法があります.一つの配列に新しい要素を追加できます.それぞれpush、unshift、spliceです.それぞれこの3つの方法を紹介します.プッシュする
pushメソッドは、配列の最後に要素を追加します.サンプルコードは以下の通りです.
unshiftメソッドは、配列ヘッドに要素を追加します.サンプルコードは以下の通りです.
spliceメソッドは、配列の指定された位置に新しい要素を挿入し、前の要素は自動的に順序を変えて移動します.注意spliceの関数プロトタイプは以下の通りです.
サンプルコードは以下の通りです.
配列要素の増加と同様に、配列中の要素を削除する方法も3つあります.それぞれは、pop、shift、spliceです.次に、この三つの関数の使い方を説明します.ポップ
pop法は配列の最後の要素を除去することである.pushとpopの組み合わせは、配列をスタック(先入後出)のような機能を実現することができる.サンプルコードは以下の通りです.
シフト方法は、最初の要素を除去し、配列中の要素を自動的に前に移動します.(この方法は間違いなく効率問題に対応しています.時間複雑さはO(n)です.
配列要素を増やす時にはspliceについて話しましたが、この関数の原型にはhowManyパラメータがあります.indexから削除した後のいくつかの要素を表しています.サンプルコードは以下の通りです.
例を挙げると、コードは以下の通りです.
ここのsliceはpython文法のsliceと同じで、戻り行列のスライスです.slice関数の原型は以下の通りです.
したがって、コピー配列は下記のコードで実現できます.
concat方法は、新しい配列を作成し、そのオブジェクト(thisが指すオブジェクト)の要素と、すべてのパラメータの配列タイプのパラメータの要素と、配列タイプ以外のパラメータ自体を順番にこの新しい配列に入れて、配列を返します.
サンプルコードは以下の通りです.
jsの配列の声明には、次のような方法があり得る.
var arr = []; //
var arr = new Array(); // new array
var arr = new Array(arrayLength); // new array
説明するのは、
var arr = [1, 2, 3, 4, 'wangzhengyi', 'bululu'];
for (var i = 0; i < arr.length; i ++) {
console.log(arr[i]);
}
配列要素アクセスJavaScript配列のインデックス値も0から始まります.直接に配列名+下付きで配列要素にアクセスできます.
サンプルコードは以下の通りです.
var arr = [1, 2, 3];
console.log(arr[0]);
console.log(arr[1]);
また、配列の巡回は連続的にforサイクルのモードを使用することを推奨しています.for-inは推奨されていません.具体的な理由は、Loop through array in JavaScriptです.巡回配列の例コードは以下の通りです.
var arr = [1, 2, 3, 4, 'wangzhengyi', 'bululu'];
for (var i = 0, len = arr.length; i < len; i ++) {
console.log(arr[i]);
}
注意:上記のコードの中で、1つの小さい最適化は、事前に配列のサイズを取得することにあり、このように、毎回巡回して配列サイズを調べる必要がない.超大型配列にとっては、一定の効率が向上します.
配列要素を追加
三つの方法があります.一つの配列に新しい要素を追加できます.それぞれpush、unshift、spliceです.それぞれこの3つの方法を紹介します.プッシュする
pushメソッドは、配列の最後に要素を追加します.サンプルコードは以下の通りです.
var arr = [];
arr.push(1);
arr.push(2);
arr.push(3);
for (var i = 0, len = arr.length; i < len; i ++) {
console.log(arr[i]);
}
実行結果は:
1
2
3
unshiftunshiftメソッドは、配列ヘッドに要素を追加します.サンプルコードは以下の通りです.
var arr = [];
arr.unshift(1);
arr.unshift(2);
arr.unshift(3);
for (var i = 0, len = arr.length; i < len; i ++) {
console.log(arr[i]);
}
実行結果は以下の通りです.
3
2
1
splicespliceメソッドは、配列の指定された位置に新しい要素を挿入し、前の要素は自動的に順序を変えて移動します.注意spliceの関数プロトタイプは以下の通りです.
array.splice(index, howMany, element...)
howManyは削除する元素の個数を表しています.もし元素を追加するだけなら、howManyは0に置く必要があります.サンプルコードは以下の通りです.
var arr = [1, 2, 3, 4];
arr.splice(1, 0, 7, 8, 9);
for (var i = 0, len = arr.length; i < len; i ++) {
console.log(arr[i]);
}
実行結果は以下の通りです.
1
7
8
9
2
3
4
配列要素を削除配列要素の増加と同様に、配列中の要素を削除する方法も3つあります.それぞれは、pop、shift、spliceです.次に、この三つの関数の使い方を説明します.ポップ
pop法は配列の最後の要素を除去することである.pushとpopの組み合わせは、配列をスタック(先入後出)のような機能を実現することができる.サンプルコードは以下の通りです.
var arr = [];
arr.push(1);
arr.push(2);
arr.push(3);
while (arr.length != 0) {
var ele = arr.pop();
console.log(ele);
}
シフトシフト方法は、最初の要素を除去し、配列中の要素を自動的に前に移動します.(この方法は間違いなく効率問題に対応しています.時間複雑さはO(n)です.
var arr = [];
arr.push(1);
arr.push(2);
arr.push(3);
function traverseArray(arr) {
for (var i = 0, len = arr.length; i < len; i ++) {
console.log(arr[i]);
}
}
while (arr.length != 0) {
var ele = arr.shift();
traverseArray(arr);
}
みんな自分で運転結果を考えることができます.splice配列要素を増やす時にはspliceについて話しましたが、この関数の原型にはhowManyパラメータがあります.indexから削除した後のいくつかの要素を表しています.サンプルコードは以下の通りです.
var arr = [1, 2, 3, 4, 5, 6, 7];
function traverseArray(arr) {
for (var i = 0, len = arr.length; i < len; i ++) {
console.log(arr[i]);
}
}
arr.splice(1, 3);
traverseArray(arr);
実行結果は:
1
5
7
配列のコピーと切り取り例を挙げると、コードは以下の通りです.
var arr1 = [1, 2, 3, 4];
var arr2 = arr1;
この時、arr 2はただarr 1配列を保存してメモリの住所を積むだけで、べつにメモリを積み上げて再び1つの配列をしてくることを申請していません.ですから、arr 2の修正はarr 1に同時に影響します.ですから、行列をコピーしたいなら、どうすればいいですか?これは学習が必要なsliceとconcat関数を引き出します.sliceここのsliceはpython文法のsliceと同じで、戻り行列のスライスです.slice関数の原型は以下の通りです.
array.slice(begin, end)
beginからendまでのすべての要素を返します.beginは含まれていますが、endは含まれていません.デフォルトは0から始まります.デフォルトendは、デフォルトは配列の最後までです.したがって、コピー配列は下記のコードで実現できます.
var arr1 = [1, 2, 3, 4];
var arr2 = arr1.slice();
arr2[2] = 10000
function traverseArray(arr) {
for (var i = 0, len = arr.length; i < len; i ++) {
console.log(arr[i]);
}
}
traverseArray(arr1);
traverseArray(arr2);
実行結果は以下の通りです.
1
2
3
4
1
2
10000
4
catconcat方法は、新しい配列を作成し、そのオブジェクト(thisが指すオブジェクト)の要素と、すべてのパラメータの配列タイプのパラメータの要素と、配列タイプ以外のパラメータ自体を順番にこの新しい配列に入れて、配列を返します.
サンプルコードは以下の通りです.
var alpha = ["a", "b", "c"];
var number = [1, 2, 3]
// ["a", "b", "c", 1, 2, 3]
var complex = alpha.concat(number);