JavaScriptの配列に関する知識を詳しく説明する.

5204 ワード

行列の作成
jsの配列の声明には、次のような方法があり得る.

var arr = [];  //     
var arr = new Array(); // new  array  
var arr = new Array(arrayLength); // new       array  

説明するのは、
  •     第3の方法は配列の長さを宣言しているが,実際には配列長は可変である.つまり、長さ5を指定しても、要素を所定の長さ以外に記憶することができます.このとき、配列の長さは変わります.
  • また、明確な点が必要です.
  •     jsは弱いタイプの言語で、つまり配列の中の要素のタイプは同じではありません.
  • 配列内の要素のタイプが一致しない例を挙げます.
    
    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
    
    
    unshift
    unshiftメソッドは、配列ヘッドに要素を追加します.サンプルコードは以下の通りです.
    
    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
    
    
    splice
    spliceメソッドは、配列の指定された位置に新しい要素を挿入し、前の要素は自動的に順序を変えて移動します.注意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
    
    
    cat
    concat方法は、新しい配列を作成し、そのオブジェクト(thisが指すオブジェクト)の要素と、すべてのパラメータの配列タイプのパラメータの要素と、配列タイプ以外のパラメータ自体を順番にこの新しい配列に入れて、配列を返します.
    サンプルコードは以下の通りです.
    
    var alpha = ["a", "b", "c"];
    var number = [1, 2, 3]
    
    //     ["a", "b", "c", 1, 2, 3]
    var complex = alpha.concat(number);