JavaScript配列はどれぐらい知っていますか?

6946 ワード

配列のウィキペディア定義は以下の通りです.
プログラミング言語では、配列データ構造(英語:array data structure)、略して配列(英語:Aray)と呼ばれ、データ構造であり、データ要素(elements)の集合である.要素は索引によって任意にアクセスでき、インデックスは通常数字であり、要素間の記憶位置のオフセットを計算するために使用される.
残念なことに、JavaScriptはこのような配列のようなデータ構造を持っていませんが、いくつかのクラスの配列特性を持つオブジェクトを提供しています.
行列を使う
1.配列の作成
var numbers = [];    //[]            ,   0。

var numbers = new Array();    //    

var numbers = [1,2,3,4,5];

var numbers = new Array(1,2,3,4,5);    //         

var numbers = new Array(5);     //       ,         

var objects = [1,"Joe",true, null];    //  JavaScript                  。
[]オペレータを使って配列を作成することを推奨します.この方法はより効率的です.
JavaScriptは、配列が任意の混合タイプの値を含むことを許可します.
var obj = ['string', 21, true, null, undefined, ['hzzly', 21], {object: true}, NaN];
2.配列長
var arr = [1, 2, 3, 4, 5];

arr.length   //5
JavaScript配列のlengthには上界がありません.
現在のlength以上の数字を下付きとして要素を格納すると、length値は新しい要素を収容するために増大され、配列外れエラーが発生しません.
var arr = [];

arr.length       //0

arr[1000] = true;

arr.length      //1001

//  arr        
3.文字列から配列を生成する
split()メソッドは、文字列を文字列配列に分割するために使用されます.
var str = 'hzzly';

var arr  = str.split('');

console.log(arr);   // ["h", "z", "z", "l", "y"]
4.配列の全体的な操作
行列を別の配列に割り当てると、割り当てられた行列のために新しい参照が追加されます.元の参照によって配列の値が修正されると、他の参照もこの変化を感知します.深度コピーとは、元の配列の各要素を新しい配列にコピーすることです.
アクセス関数
1.indexOf()
indexOf()は、ターゲット配列内に入力されたパラメータが存在するかどうかを調べるために使用されます.ターゲット配列がパラメータを含む場合、配列内の要素の索引を返します.含まない場合は-1を返します.配列に複数の同じ要素が含まれている場合、indexOf関数は常に最初のパラメータと同じ要素のインデックスを返します.lastIndexOf()は、同じ要素の最後の要素の索引を返します.同じ要素が見つからない場合は-1を返します.
var arr = ["h", "z", "z", "l", "y"];

arr.indexOf('h');  //0

arr.indexOf('l')   //3

arr.indexOf('z')   //1

arr.lastIndexOf('z')   //2
2.配列の文字列表現
join()とtoString()の方法は、配列のすべての要素を含む文字列を返します.デフォルトでは、各要素の間にコンマで区切られます.直接配列に対してprint関数を使用すると、システムは自動的にその配列のTotringメソッドを呼び出します.
var arr = ["h", "z", "z", "l", "y"];

arr.join()   //"h,z,z,l,y"

arr.toString()   //"h,z,z,l,y"
3.既存の配列から新しい配列を作成します.
concat()方法は複数の配列を結合して新しい数を作成することができ、concat()法の開発者は1つの配列であり、パラメータは別の配列である.パラメータの配列として、すべての要素がconcat()メソッドを呼び出す配列の後ろに接続されている.splice()方法は、1つの配列のサブセットを切り取り、新しい配列を作成します.splice()方法は既存の配列から新しい配列を切り取り、この方法の最初のパラメータは切り取りの開始インデックスであり、第二のパラメータは切り取りの長さである.
var a = ['h','z'];

var b = ['z','l','y'];

var c = a.concat(b)   //["h", "z", "z", "l", "y"]

var myFish = ['angel', 'clown', 'mandarin', 'surgeon'];
//    0        2,    'drum'
var removed = myFish.splice(2, 0, 'drum');
// myFish is ['angel', 'clown', 'drum', 'mandarin', 'surgeon']
// removed is [],        

//       3    
removed = myFish.splice(3, 1);
// myFish is ['angel', 'clown', 'drum', 'surgeon']
// removed is ['mandarin']

//       2    ,      'trumpet'     2 
removed = myFish.splice(2, 1, 'trumpet');
// myFish is ['angel', 'clown', 'trumpet', 'surgeon']
// removed is ['drum']

//      0         ,      'parrot', 'anemone' and 'blue'
removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');
// myFish is ['parrot', 'anemone', 'blue', 'trumpet', 'surgeon']
// removed is ['angel', 'clown']

// removes 2 elements from index 3
removed = myFish.splice(3, Number.MAX_VALUE);
// myFish is ['parrot', 'anemone', 'blue']
// removed is ['trumpet', 'surgeon']
可変配列
1.要素を追加
push()メソッドは、配列の最後に要素を追加し、配列の新しい長さ値を返します.配列のlength属性を用いて、配列に要素を追加することもできますが、push()方法はより直感的に見えます.unshift()メソッドは、配列の先頭に要素を追加してもいいし、一度に呼び出して、配列に複数の要素を追加してもいいです.splice()方法は配列に要素を追加することができます.スタートインデックス(つまり要素を追加したいところ)を提供してください.削除する要素の個数(元素を添加する時にこのパラメータを0として設定します.)を追加したいです.
var arr=['h'];

arr.push('z');   //2   arr   ["h","z"]

arr.unshift('y')   //3   arr   ["y","h","z"]
2.要素の削除
pop()メソッドは、配列の最後の要素を削除し、削除された値を返します.shift()メソッドは、配列の最初の要素を削除し、削除された値を返します.配列中の要素は自動的に前に移動し、ポップよりもずっと遅いです.splice()メソッドは削除する下付きと個数を指定できます.最初のパラメータは下付きで、最初のパラメータは要素の個数を削除し、削除した要素に値を返します.
var arr = ["h", "z", "z", "l", "y"];

arr.pop()  //  y     arr   ["h", "z", "z", "l"]

arr.shift()  //  h     arr   ["z", "z", "l"]

arr.splice(1,2)  //  ["z", "l"]     arr   ["z"]
3.並べ替え
reverse()メソッドは、配列中の要素を中間位置で反転させます.sort()は配列を辞書順に並べます.
  sort()     ,            :

function compare(num1,num2) {
    return num1 - num2;
}
var nums = [3,1,2,100,4,200];
nums.sort(compare);   //[1, 2, 3, 4, 100, 200]
ローズマリーの方法
1.新しい配列を生成しないためのシーケンサ方法
forEach()この方法はパラメータを使用する関数を受け入れ、配列内の各要素にこの関数を使用します.everry()この方法は、リターン値がブールタイプの関数であることを受け入れ、この関数を配列内の各要素に使用します.すべての要素に対して、この関数がtrueに戻ると、この方法はtrueに戻ります.some()この方法はまた、戻り値がブールタイプの関数であることを受け入れ、関数をtrueに戻す要素がある限り、この方法はtrueに戻る.reduce()この方法は、関数を受け入れて、値を返します.この方法はアキュムレータ値から始まり、アキュムレータ値と配列中の後続要素に対して関数を呼び出します.配列中の最後の要素まで、最後に得られたアキュムレータ値を返します.配列中の要素を長い文字列に接続するためにも使用できます.
var arr = [1,2,3,4,5]

arr.forEach(function(item,index){   //             
    console.log(item,index)
})

var result = arr.every(function(item,index){   //               
    return item > 0 
})

var result = arr.some(function(item,index){   //               (        true)
    return item > 1 
})

var result = arr.every(function(pre,next){   //               ,      
    return pre + next
})
2.新しい配列を生成するためのシーケンサの方法
map()は、forEach()と似ていますが、配列の各要素には、ある関数を使用しています.違いは、新しい配列を返すことです.この配列の要素は元の要素に関数を適用して得られた結果です.filter()は、every()と同様に、リターン値がブールタイプの関数として伝えられています.これは、配列中の赤のすべての要素に関数を適用すると、結果がtrueである場合、この方法はtrueに戻りません.
var arr = [1,2,3,4,5]
var newArr = arr.map(function(item,index){   //                
    return item * 2
})
newArr => [2,4,6,8,10]

var newArr2 = arr.filter(function(item,index){   //            ,     
    return item > 3 
})
newArr2 => [4,5]
二次元配列と多次元配列
1.二次元配列の作成
Array.matrix = function(numrows,numcols,initial) {
    var arr = [];
    for (var i = 0; i < numrows; ++i) {
        var columns = []; 
        for (var j = 0; j < numcols; ++j) {
            columns[j] = initial;
        }
    arr[i] = columns;
    }
    return arr;
}
配列完了
以上はすべて個人の観点です.もし間違いがあれば、ご指摘ください.
参考書
  • 「JavaScript言語精粋」
  • 「JavaScript高級プログラム設計」