JavaScriptオリジナル配列Arrayの一般的な方法

7212 ワード

スタックメソッド
push法とpop法は、配列の挙動をスタックに類似することができ、先進的に後出し、押し込みとポップアップ操作は一端でのみ発生する.
Pushメソッド
Pushメソッドは、1つ以上のパラメータを受信、それらを配列の末尾に追加し、修正後の配列の長さを返すことができる.

var arr = ['a', 'b', 'c', 'd', 'e'];
var temp = arr.push('f');
console.info('temp: ' + temp); // temp: 6
console.info(arr); // ["a", "b", "c", "d", "e", "f"]

temp = arr.push('g', 'h');
console.info('temp: ' + temp); // temp: 8
console.info(arr); // ["a", "b", "c", "d", "e", "f", "g", "h"]

2つの配列を結合
アリーを通してprototype.push.apply()は、次のような2つの配列を結合します.

var arr1 = ['a', 'b', 'c'],
  arr2 = ['x', 'y', 'z'];
var temp = Array.prototype.push.apply(arr1, arr2);
console.info(arr1); // ["a", "b", "c", "x", "y", "z"]
console.info(arr2); // ["x", "y", "z"]
console.info(temp); // 6

Popメソッド
popメソッドは、配列の最後の項目を除去する、配列の長さを1だけ減らし、除去した項目を返す.

var arr = ['a', 'b', 'c', 'd', 'e'];
var temp = arr.pop();
console.info('temp: ' + temp); // temp: e
console.info('length: ' + arr.length); // length: 4

空の配列でpopメソッドを使用するとundefinedが返されます.
キューメソッド
キューのアクセスルールは、先進的に先行する、キューの最後に項目を追加し、キューの頭に項目を削除することである.pushメソッドとshiftメソッドを併用ことで、操作キューのように配列を操作することができる.
shiftメソッド
shiftメソッドは、配列の第1項を除去し、配列の長さを1に減らし、除去する項を返す.

var arr = ['a', 'b', 'c', 'd', 'e'];
var temp = arr.shift();
console.info('temp: ' + temp); // temp: a
console.info('length: ' + arr.length); // length: 4

unshiftメソッド
逆に、shift法とは反対に、1つ以上のパラメータを受信配列の先端に順次追加し、修正後の配列の長さを返すunshift法もある.

var arr = ['a', 'b', 'c', 'd', 'e'];
var temp = arr.unshift('x', 'y', 'z');
console.info('temp: ' + temp); // temp: 8
console.info(arr); // ["x", "y", "z", "a", "b", "c", "d", "e"]

並べ替え方法
sortメソッドとreverseメソッド
sort法とreverse法は直接並べ替えに用いることができる2つの方法である.ここで、reverse法は配列を反転するためのものである.

var arr = [1, 3, 2, 5, 4];
arr.reverse();
console.info(arr); // [4, 5, 2, 3, 1]

sortメソッドについては、デフォルトでは、配列の各項目を昇順に配列する、すなわち最小の値が前にある.しかし、sortメソッドはtoStringメソッドを呼び出して各項目を文字列に変換する比較(文字列がUnicodeサイトを介してソートされる)を行うので、この比較スキームは多くの場合最適なスキームではない.例:

var arr = [1, 3, 2, 5, 4];
arr.sort();
console.info(arr); // [1, 2, 3, 4, 5]

arr = [1, 5, 10, 20, 25, 30];
arr.sort();
console.info(arr); // [1, 10, 20, 25, 30, 5]

従って、sort法は、比較関数をパラメータとして受信、ソートのルールを決定することができる.比較関数は、2つのパラメータを受信します.1番目のパラメータが2番目のパラメータより小さい場合(つまり、1番目のパラメータが2番目のパラメータより前にある必要があります)は負の数を返し、2つのパラメータが等しい場合は0を返し、1番目のパラメータが2番目のパラメータより大きい場合は正の数を返します.たとえば、次のようになります.

var arr = [1, 5, 10, 20, 25, 30];
arr.sort(function(value1, value2){
  if(value1 < value2) {
    return -1;
  } else if(value1 > value2) {
    return 1;
  } else {
    return 0;
  }
});
console.info(arr); // [1, 5, 10, 20, 25, 30]

操作方法
concatメソッド
concatメソッドは、複数の配列を新しい配列にまとめることができる.concatが受信可能なパラメータは配列であってもよいし、非配列値であってもよい.

var arr1 = ['a', 'b', 'c'],
  arr2 = ['x', 'y', 'z'],
  val = 'hello';
var temp = arr1.concat(val, arr2);
console.info('arr1: ' + arr1); // arr1: a,b,c
console.info('arr2: ' + arr2); // arr2: x,y,z
console.info('val: ' + val); // val: hello
console.info('temp: ' + temp); // temp: a,b,c,hello,x,y,z

concatメソッドは、元の配列を操作するのではなく、新しい配列を作成し、呼び出すオブジェクトの各項目およびパラメータの各項目または非配列パラメータを新しい配列に順次挿入し、この新しい配列を返す.
concatメソッドは、呼び出す配列自体を操作するのではなく、各パラメータ配列も操作せず、それらの各要素をコピーして新しく作成した配列に配置する.コピーのプロセスは、オブジェクトタイプについては、オブジェクト参照をコピーする一部を新しい配列に配置し、基本タイプについては、その値を新しい配列に配置する.
sliceメソッド
sliceメソッドは、ソース配列の一部の要素に基づいて浅いコピーを行い、開始から終了(終了位置を除く)までの位置を含む要素の新しい配列を返すことができる.

var arr = ['a', 'b', 'c', 'd', 'e'];
var temp1 = arr.slice(),
  temp2 = arr.slice(1),
  temp3 = arr.slice(1, 2);
console.info(arr); // ["a", "b", "c", "d", "e"]
console.info(temp1); // ["a", "b", "c", "d", "e"]
console.info(temp2); // ["b", "c", "d", "e"]
console.info(temp3); // ["b"]

例から、次のことがわかります.
  • sliceメソッドは元の配列を操作するのではなく、新しい配列を作成する.
  • sliceメソッドにパラメータが渡されない場合、インデックス0からコピーを開始する新しい配列が戻る.
  • は、arr.slice(1)のようなパラメータを入力、インデックス1の位置から元の配列の最後の要素までコピーを開始することを示す.
  • は、arr.slice(1,2)などの2つのパラメータを入力、インデックス1の位置からコピーを開始し、位置2にコピーするが、位置2の要素を含まないことを示す.

  • パラメータが負数の場合、配列の一番後ろの要素から計算できることを示す.
    sliceメソッドは、呼び出した配列自体を操作するのではなく、元の配列の各要素をコピーして新しく作成した配列に配置する.コピーのプロセスもconcatの方法と同じである.
    spliceメソッド
    spliceメソッドは、配列要素を削除または変更するために使用することができる.次のような使い方があります.
    削除:spliceメソッドに1つまたは2つのパラメータが入力と、配列から任意の要素を削除できます.パラメータが入力:削除する最初の要素の位置.削除する最初の要素の位置から、後のすべての要素が削除されます.2つのパラメータが入力されます.削除する最初の要素の位置と削除するアイテムの数です.戻り値は、削除する要素の配列です.たとえば、次のようになります.
    
    var arr = ['a', 'b', 'c', 'd', 'e'];
    var temp = arr.splice(2);
    console.info(arr); // ["a", "b"]
    console.info(temp); // ["c", "d", "e"]
    
    arr = ['a', 'b', 'c', 'd', 'e'];
    temp = arr.splice(2, 2);
    console.info(arr); // ["a", "b", "e"]
    console.info(temp); // ["c", "d"]

    挿入:spliceメソッドを使用して、配列の指定された位置にタスク数の要素を挿入します.この場合、3つのパラメータが必要です.開始位置(挿入する位置)、0(削除する項目数を示し、0は削除しない)、挿入する要素、複数の要素を挿入する場合は、次のようなパラメータを追加できます.
    
    var arr = ['a', 'b', 'c', 'd', 'e'];
    var temp = arr.splice(2, 0, 'x', 'y', 'z');
    console.info(arr); // ["a", "b", "x", "y", "z", "c", "d", "e"]
    console.info(temp); // [],        

    置換:spliceが3つのパラメータを受信、2番目のパラメータが0でない場合、配列に要素を置換する効果が得られる.例:
    
    var arr = ['a', 'b', 'c', 'd', 'e'];
    var temp = arr.splice(2, 2, 'x', 'y', 'z');
    console.info(arr); // ["a", "b", "x", "y", "z", "e"]
    console.info(temp); // ["c", "d"]

    この例では、arr配列の位置が2の要素から2つの要素を削除し、位置2に3つの要素を追加する.除去する要素の数が追加する要素の数と等しくない場合、配列の長さが変化する.
    また、ECMAScript 5からは、配列の反復方法、集計方法なども提供する、これらの方法は後で補完する.