JavaScript:配列学習

6696 ワード

作成
主に構造関数と字面量の2つの方法に分けられます.配列の本質はオブジェクトです.
構造関数
  • var a1=new Array();はパラメータがなく、空き行列
  • を作成します.
  • var a2=new Array(5);の1つのデジタルパラメータは、配列長を指定し(配列長は動的に調整できるので、役割は大きくない)、指定された長さの配列
  • を作成する.
  • var a3=new Array(4,'hello',new Date());には初期化データがあり、配列を作成し、パラメータデータを初期化する.このタイプが一致しない場合、配列タイプはobject
  • です.
    文字の量
  • var a4=[];は、大かっこを使用して、空配列を作成し、無参画関数
  • を起動するのと同じです.
  • var a5=[10];は、中かっこを使用し、初期化データを有するコンストラクタの呼び出しと同じデータを着信する.この場合、要素の配列を作成します.この要素の値は10です.字面量は、1つまたは複数のパラメータに関係なく、初期化値という意味だけです.
  • var arr = [element0, element1, ..., elementN];は、字面量方式を推奨する
  • .
    指定された個数が足りません.各要素は初期値を指定する構成方法です.たとえば、配列を作成し、全部でn個の要素が、各要素はfalseに初期化される.これは2つのステップを必要とし、最初に空の配列を作成し、次にforサイクルを行い、各要素の割当値はfalseである.
    アクセス
  • は主にインデックスを通じて
  • にアクセスします.
  • 長さlengthは、最後の要素のインデックス値+1
  • である.
  • 長さlengthは修正されてもいいですが、配列容量が変更されたり、データがなくなったりすることがありますので、おすすめできません.通常は、読み取り専用の属性として使ったほうがいいです.
  • length=0クリア配列は、クリア配列を提供する方法がないので、これを使って
  • を実現します.
  • は、[]で与えられたのが正数ではなく、負の値、または文字であれば、配列に属性を追加します.
  • インデックスも配列の属性であり、[]はインデックスを置くことができ、他の属性を置くこともできます.
  • インデックスがlengthを超えると、undefined
  • に戻ります.
    var arr = ["one", "two", "three"];
    arr[2];  // three
    arr["length"];  // 3
    arr[6]; // undefined
    
    巡回する
  • の最も一般的な方法はforサイクルであり、巡回するだけで、何の変換もしない
  • です.
    var colors = ['red', 'green', 'blue'];
    for (var i = 0; i < colors.length; i++) {
      console.log(colors[i]);
    }
    
    for inは、プロトタイプチェーン上のすべての属性をエニュメレート・チェーンで循環するので、これらの属性をフィルタリングする唯一の方法はhasOwnProperty関数を使用するので、通常のforサイクルよりも数倍遅くなります.for inを使用して、配列を巡回することは、好ましくないコード習慣と考えられ、エラーを発生し、性能問題を引き起こす傾向がある.
  • forEach()方法は、配列を巡回して変換し、新しい配列に戻らず、直接に元の配列で
  • を動作させる.
    var a = ['a', 'b', 'c'];
    a.forEach(function(element) { console.log(element);} ); 
    // logs each item in turn
    
  • map()方法は、配列を巡回して変換し、元の配列を変更せず、変換後の結果を新しい配列に入れて
  • を返す.
    var a1 = ['a', 'b', 'c'];
    var a2 = a1.map(function(item) { return item.toUpperCase(); });
    console.log(+a1); // logs a,b,c
    console.log(+a2); // logs A,B,C
    
    追加
  • arrayObj. push([item1 [item2 [. . . [itemN ]]]]);/1以上の新しい要素を配列の最後に追加し、配列の新しい長さを返します.後をつけて、最も常用します.複数の要素をカンマで区切る
  • arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);/1以上の新しい要素を配列の開始に追加し、配列内の要素は自動的に後に移動し、配列の新しい長さを返します.前をプラスして、時には使うことができます.複数の要素をカンマで区切る
  • arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);/1以上の新しい要素を配列の指定位置に挿入し、挿入位置の要素は自動的に後に移動し、「」を返します.中間を追加すると、他の言語の挿入関数に相当します.複数の要素はカンマで区切られている.2番目のパラメータは0です.0つの要素を削除し、挿入機能だけが残ります.
  • 削除
  • arrayObj.pop();/最後の要素を除去し、要素値を返します.後を削除して、最も常用します;一つの要素しかない
  • arrayObj.shift();/最初の要素を除去し、要素値を返します.配列中の要素は自動的に前に移動します.前を削除して、時には使うことができます.一つの要素しかない
  • arrayObj.splice(deletePos,deleteCount);/指定位置deletePo sから指定された数deleteCountの要素を削除し、削除された要素を配列形式で返す.中間を削除して、時には使うことができます.複数の要素があります.後のオプションの追加要素はなく、削除機能のみが残ります.
  • 切り取りArrayarrayObj.slice(start, [end]);//配列の形で配列の一部を返し、endに対応する要素を含まないことに注意し、endを省略するとstartの後のすべての要素が複製される.
  • 元の配列は変更されません.spliceは元の配列を直接修正します.この違いは大きいです.
  • var a = new Array ("a", "b", "c", "d", "e");
    var b = a(1, 4); 
    var c = a(1); 
    console.log(a) // ["a", "b", "c", "d", "e"]
    console.log(b) // ["b", "c", "d"]
    console.log(c) // ["b", "c", "d", "e"]
    
    統合arrayObj.concat([item1[, item2[, . . . [,itemN]]]]);/複数の配列(文字列でも良いし、配列と文字列の混合)を1つの配列に接続し、接続された新しい配列を返します.
  • 元の配列は変更されません.spliceは元の配列を直接修正します.この違いは大きいです.
  • var a = new Array("1", "2", "3");
    var b = new Array("a", "b", "c");
    var c = a.concat(b);
    console.log(a); // ["1", "2", "3"]
    console.log(b); // ["a", "b", "c"]
    console.log(c); // ["1", "2", "3", "a", "b", "c"]
    
    並べ替え
  • arrayObj.reverse();/反転要素(一番前の列は最後、最後の列は一番前に)は、配列アドレス
  • を返します.
  • arrayObj.sort();/配列要素の並べ替えに対して、配列アドレスに戻り、小さいときから大きいときまで、昇順に
  • を並べます.
  • sort()は、配列要素をどのように比較するかを決定するためのコールバック関数を持ってもよい.このコールバック関数は、2つの値を比較し、3つの値のうちの1つを返します.1、−1、0の3つの分岐は全部書きます.図を見ないでください.そうしないと、思いがけない論理的な問題が発生しやすくなります.例えば、次のコードは文字列の最後の文字で並べ替えられます.
  • var myArray = new Array("Wind", "Rain", "Fire");
    var sortFn = function(a, b){
      if (a[a.length - 1] < b[b.length - 1]) return -1;
      if (a[a.length - 1] > b[b.length - 1]) return 1;
      if (a[a.length - 1] == b[b.length - 1]) return 0;
    }
    myArray.sort(sortFn); 
    // sorts the array so that myArray = ["Wind","Fire","Rain"]
    
    文字列化arrayObj.join(separator);/は文字列を返し、この文字列は配列の各要素値を結合し、中間はseparatorで区切られる.toLocaleString 、toString 、valueOf:は、一般的ではないjoinの特殊な使い方と見なされてもよい.返した文字列は新しく作成されました.元の配列は変更されません.
    var myArray = new Array("Wind", "Rain", "Fire");
    var list = myArray.join(" - "); // list is "Wind - Rain - Fire"
    console.log(myArray); // ["Wind", "Rain", "Fire"]
    console.log(list); // Wind - Rain - Fire
    
    結び目
  • 配列は通常のオブジェクトであり、特別なセットタイプではない.c言語の連続メモリと本質的な違いがあります.
  • length, indexなどは属性です.アクセスできます.配列が境界を越えることに注意しなくてもいいです.存在しない属性にアクセスし、undefinedを返してもいいです.存在しないindexを設定して、属性を追加すればいいです.length, indexの両者の関係は対象内部のメンテナンスがある.
  • は空のデータを提供する方法がなくて、length = 0;を使って間接的に目的を達成します.これはちょっと特殊で、個人の感覚もあまり良くないです.暇つぶしの方法を提供するのは難しくないはずです.
  • 配列操作の方法が提供されていますか?それとも完全ですか?使いやすいです.適当な時に適当な方法を採用します.
  • spliceこの方法は特殊で、削除したり、挿入したりして、目標配列自体を変えます.機能が充実していて、各種パラメータの場合は表現が違っていますので、注意して使用してください.
  • 配列の定義は、やはり一番簡単な[]を使っています.
    参考文献
    配列の対象(Aray object)Mozzziaの教程、よく書けています.暇があれば、たくさん見てください.
    javascriptの配列はこれを操作して簡潔に書いてありますので、多く見てみてください.
    JavaScript配列はこれを詳しく書いていますので、多く見てください.
    RUNOO B.COMはJavaScriptなどの技術を勉強するウェブサイトです.レイアウトもいいです.
    JavaScript Arayオブジェクトはとても簡明なW3Cマニュアルです.たまに調べてみます.