blog

JavaScriptの配列(Array)メソッド

まず、配列メソッド concat は、配列の浅いコピーを含む新しい配列を生成し、新しい配列に複数の引数項目を追加します。 j...

Feb 22, 2020 · 14 min. read
シェア

I. アレイ方式

array.concat(item....)

concat、配列の浅いコピーを含む新しい配列を生成し、複数の引数項目を新しい配列に追加します。

var foo = [
    0x1,
    0x2,
    0x3
];
var obj = [
    0x4,
    0x5,
    0x6
];
var bar = foo.concat(0x7, 0x8);
var Obj = foo.concat(obj);
var B = foo.concat(obj, 0x7);

array.join(separator)

join**メソッドは**配列**を文字列に構築します 。配列の各要素は文字列として構築され、セパレータを使用して結合されます。separator.

注: +演算子より速い

var obj = [
    0x1,
    0x2,
    0x3
];
var foo = [
    'a',
    'b',
    'c'
];
var bar = obj.join('-');
var B = foo.join('');
var C = obj.join();

array.slice(start, end)

slice method:元の配列を変更せずに、配列の一部分を浅くコピーします。

end**パラメータはオプションデフォルト値は配列array.length; **end**パラメータはオプションデフォルト値は配列array. lengthの長さ

引数の1つが負である場合、array.lengthが加算され、負でなくなります

startがarray.length以上であれば、空の配列が得られます。

var obj = [
    'a',
    'b',
    'c'
];
var bar = obj.slice(0x0, 0x1);
var foo = obj.slice(0x1);
var Foo = obj.slice(0x4);
var Obj = obj.slice(-0x1);

array.splice(start, deleteCount, item...)

splice:配列から一つ以上の要素を取り除き、新しい要素に置き換えます。取り除いた要素を含む配列を返します。

主な用途:配列から要素を取り除く

  • start配列から削除する要素の開始位置

  • deleteCount は、削除する要素の数です;

  • 余分な引数は、削除された要素の位置にアイテムとして挿入されます。

    var a = ["a", "b", "c"]; var b = a.splice(1,1, 'ache', 'bug'); //aは['a', 'ache', 'bug', 'c'] //bは['b']です。

array.reverse();

reverse:配列の要素の順序を逆にし、配列そのものを返します。

var foo = [
    'a',
    'b',
    'c'
];
var c = foo.reverse();

array.sort(comparefn)

sort:配列の内容を並べ替えます。

comparefn: 2つの引数を取る比較関数:

  • 0: 両方のパラメータが等しい
  • 否定:最初のパラメータを最初に、 昇順。

Comparefn が値を渡さない場合、数値のセットを正しくソートしません。

var b = [
    0x4,
    0x8,
    0x19,
    0x2,
    0x10,
    0x2b
];
b.sort();

JavaScriptのデフォルトの比較関数は、ソートされるすべての要素を文字列として扱い、配列内の要素の型をインテリジェントに検出することはできません。数値を比較する場合、数値は文字列に変換され、上記のような結果になります。

var b = [
    0x4,
    0x8,
    0x19,
    0x2,
    0x10,
    0x2b
];
b.sort(function (bar, foo) {
    return bar - foo;
});

array.pop()

pop:スタックと同様に配列を扱うpopメソッドは、**array**の最後の要素を取り除き、その要素を返します。配列が空の場合は未定義を返します。

var foo = [
    'a',
    'b',
    'c'
];
var obj = foo.pop();

実現:

Array.method('pop', function(){ return this.splice(this.length-1, 1)[0]; });

array.push(item...)

push:1つ以上の引数 item を配列の末尾に追加します。item が配列の場合、item 配列の各 item を配列の末尾に追加します。そして、配列arrayの新しい長さを返します。

var foo = [
    'a',
    'b',
    'c'
];
var obj = [
    '4',
    '5'
];
var bar = foo.push(...obj, 'd', 'e', 'f');

実現。

Array.method('push', function(){
 this.splice.apply(this,[this.length, 0].concat(...arguments));
 return this.length;});

array.shift()

shift:配列の最初の要素を削除して返します。配列が空の場合は未定義を返します。shift は pop よりも遅いです。

var obj = [
    'a',
    'b',
    'c'
];
var c = obj.shift();

実現:

Array.method('shift', function(){ return this.splice(0,1)[0]; })

array.unshift(item...)

unshift:1 つ以上の引数項目を配列の先頭に追加します。配列の新しい長さを返します。

var bar = [
    'a',
    'b',
    'c'
];
var obj = [
    'd',
    'e'
];
var foo = bar.unshift(...obj, 'g');

実現:

Array.method('unshift', function(){ this.splice.apply(this, [0, 0].concat(...arguments)); return this.length; })

配列の走査

array.forEach(function)

配列に対する反復処理:配列の各要素に対して一度だけ関数を呼び出します。

この関数は3つのパラメータを取ります:

  • プロジェクト価値

  • プロジェクトインデックス

  • 配列そのもの

    var text = ""; var a = ["a", "b", "c"];a.forEach(=>{ text += item + "-" }); //"a-b-c-" としてテストします。

array.map(function): 元の配列を変更しません。

map()メソッドは便利です:

  • 配列の各要素に対して関数を実行すると、新しい配列が作成されます。

  • は、値を持たない配列要素に対して関数を実行しません。

  • 元の配列は変更せず、新しい配列を返します

パラメータは実行関数で、forEachと同じ3つのパラメータ(項目の値、インデックス、配列そのもの)を取ります。

var arr = [1, 2, 3];
var newArr = arr.map((item, index, arr)=>{ 
 return item *2;
});
//newArr [2,4,6], arr [1, 2, 3]

array.filter(function): 配列のフィルタリング

filter() メソッドは、テストに合格した配列要素を含む新しい配列を作成します。

項目値、インデックス、配列そのもの。

var arr = [1, 2, 3, -1, 0];
var newArr = arr.filter((item, index, arr)=>{ 
 return item > 0;
});
//newArr  [1, 2, 3], arr [1, 2, 3, -1, 0]

array.reduce(function(){}, initialValue)

reduce() メソッドの役割:

  • 配列の各要素に対して関数を実行し、1 つの値を生成します。
  • 配列の左から右へ処理します。reduceRight() も参照ください。
  • は元の配列を減らすことはありません

パラメーター

この関数には4つのパラメータがあります:

  • プロジェクト価値

  • プロジェクトインデックス

  • 配列そのもの

  • 第2パラメータ:第2パラメータは、コールバック関数の第1パラメータ・アキュムレータの初期値 です

注:初期値が省略された場合、その初期値は元の配列の最初の要素となり、計算は2番目の要素から開始され、初期値は最初の要素となります。

例: 配列の要素の合計を計算します:

var numbers1 = [45, 4, 9, 16, 25];
//初期値が与えられると、配列は最初の要素からカウントされるので、合計5回許容される関数を破壊する。
var sum = numbers1.reduce((total, value, index, array)=>{
 return total + value;
}, 100);
//sum対象:199ドル 
//初期値が与えられていないため、アキュムレータの合計の初期値は配列の最初の要素となり、reduceコールバック関数は4回実行される。 sum1 = numbers1.reduce((total, value, index, array)=>{
 return total + value;
});
//sum1:99

array.reduceRight()

reduce() と似ていますが、 reduceRight() は配列の右から左に向かって計算する点が異なります。

例: 配列の要素の合計を計算します:

var b = [
    0x2d,
    0x4,
    0x9,
    0x10,
    0x19
];
var a = b.reduceRight(c, 0x1);
function c(obj, bar) {
    return obj + bar;
}

array.every(function)

every() メソッドは、すべての配列値がテストに合格しているかどうかをチェックします。戻り値はブール値

パラメータは3つのパラメータを受け取るチェック関数です:

  • プロジェクト価値
  • プロジェクトインデックス
  • 配列そのもの

例: 配列の各要素が 18 より大きいかどうかの判定

var foo = [
    0x2d,
    0x4,
    0x9,
    0x10,
    0x19
];
var bar = foo.every(c);
function c(obj) {
    return obj & gt;
    0x12;
}

array.some()

some() メソッドは、ある配列の値がテストに合格するかどうかを調べます。戻り値は bool 値です。

every()と同じ。

例: この例では、ある配列の値が 18 より大きいかどうかを調べます:

var b = [
    0x2d,
    0x4,
    0x9,
    0x10,
    0x19
];
var bar = b.some(a);
function a(foo, obj, c) {
    return foo & gt;
    0x12;
}

array.indexOf(item, start))

indexOf() メソッドは、配列内の要素値を検索してその位置を返します

パラメーター

項目

必須取得する項目

立ち上がり

オプション。検索を開始する位置。負の値を指定すると、指定した位置から開始し、最後まで検索します。

注:最初のアイテムの位置は0、2番目のアイテムの位置は1、以下同様。

Array.indexOf() は、項目が見つからなければ -1 を返します

項目が複数回出現する場合は、最初に出現した位置が返されます。

var c = [
    'Apple',
    'Orange',
    'Apple',
    'Mango'
];
var obj = c.indexOf('Apple');
var foo = c.indexOf('Apple', 0x1);

array.lastIndexOf()

lastIndexOf() 要素の最後の出現場所を検索し、その位置を返します。

Array.lastIndexOf() は Array.indexOf() と似ていますが、配列の末尾から検索します

var foo = [
    'Apple',
    'Orange',
    'Apple',
    'Mango'
];
var b = foo.lastIndexOf('Apple');

array.find(function)

find() メソッドは、テスト関数をパスした最初の配列要素の値を返します。

このテスト関数は3つのパラメータを受け付けることに注意してください:

  • プロジェクト価値
  • プロジェクトインデックス
  • 配列そのもの

例: 配列の最初の要素の値が 18 より大きい場合

var b = [
    0x4,
    0x9,
    0x10,
    0x19,
    0x1d
];
var a = b.find(obj);
function obj(foo, c, bar) {
    return foo & gt;
    0x12;
}

array.findIndex(function)

findIndex() メソッドは、テスト関数を通過した最初の配列要素のインデックスを返します

このテスト関数は3つのパラメータを受け付けることに注意してください:

  • プロジェクト価値
  • プロジェクトインデックス
  • 配列そのもの

この例では、18より大きい最初の要素のインデックスを見つけます:

var obj = [
    0x4,
    0x9,
    0x10,
    0x19,
    0x1d
];
var b = obj.findIndex(bar);
function bar(c, a, foo) {
    return c & gt;
    0x12;
}

一般的な配列メソッドは、元の配列を変更するかどうかで分類されます。

修正方法

以下のメソッドは、呼び出したオブジェクト自身の値を変更し、配列そのものを返します

配列の内部では、要素のシーケンスがあるセグメントから別のセグメントにコピーされ、元の値が上書きされます。

配列の指定した区間内のすべての要素の値を、ある固定値で置き換えます。

配列の最後の要素を削除し、その要素を返します。

配列の末尾に 1 つ以上の要素を追加し、配列の新しい長さを返します。

配列の要素の順序を逆にします。つまり、最初にあったものは最後になり、最後にあったものは最初になります。

配列の最初の要素を削除し、その要素を返します。

配列の要素をソートし、現在の配列を返します。

配列の任意の位置に、任意の要素を追加または削除します。

配列の先頭に 1 つ以上の要素を追加し、配列の新しい長さを返します。

アクセス方法

以下のメソッドは、呼び出したオブジェクトの値を変更することはなく、新しい配列を返すか、そうでなければ期待される値を返すだけです。

現在の配列と他のいくつかの配列、あるいは配列以外の値を組み合わせた新しい配列を返します。

現在の配列に指定した値が含まれているかどうかを判定し、 含まれていれば true を、そうでなければ false を返します。

すべての配列要素を連結して文字列を形成します。

現在の配列のセグメントを取り出し、新しい配列にまとめます。

現在の配列リテラルを表す文字列を返します。メソッドのプロトタイプ・チェーンをマスクします。 Object.prototype.toSource() メソッドをマスクします。

配列のすべての要素を組み合わせた文字列を返します。メソッドのプロトタイプ・チェーンをマスクします。 Object.prototype.toString() メソッドのプロトタイプチェインをマスクします。

すべての配列要素を結合した文字列を返します。メソッドのプロトタイプチェーンをマスクします。 Object.prototype.toLocaleString() メソッドのプロトタイプチェーンをマスクします。

指定した値と等しい配列の最初の要素のインデックスを返します。

配列の最後の要素のうち、指定した値と等しいもののインデックスを返します。

反復法

以下のトラバーサルメソッドの多くは、コールバック関数を引数として指定する必要があります。コールバック関数が配列の各要素に対して個別に実行された後、配列の length 属性はどこかにキャッシュされるため、コールバック関数内で現在の配列に新しい要素を追加しても、新しく追加された要素は走査されません。さらに、コールバック関数内で現在の配列に他の変更を加えた場合、例えば要素の値を変更したり要素を削除したりすると、その後のトラバーサルに意図しない影響を与える可能性があります。また、この仕様ではそのような操作を詳細に定義していますが、可読性と保守性の観点から、そのような操作は行わないでください。

Array.prototype.forEach()

コールバック関数は、配列の各要素に対して一度だけ実行されます。

Array.prototype.entries()

すべての配列要素のキーと値のペアを含む配列イテレータオブジェクトを返します。

Array.prototype.every()

配列のすべての要素がテスト関数を満たす場合に true を返し、 満たさない場合に false を返します。

Array.prototype.some()

配列の少なくともひとつの要素がテスト関数を満たす場合に true を返し、 満たさない場合に false を返します。

Array.prototype.filter()

filter 関数で true を返した配列のすべての要素を新しい配列に入れ、それを返します。

Array.prototype.find()

テスト関数を満たす最初の要素を見つけ、その要素の値を返します。

Array.prototype.findIndex()

テスト関数を満たす最初の要素を見つけ、その要素のインデックスを返します。

Array.prototype.keys()

すべての配列要素のキーを含む配列イテレータオブジェクトを返します。

Array.prototype.map()

コールバック関数の戻り値からなる新しい配列を返します。

Array.prototype.reduce()

左から右へ配列の各要素に対してコールバック関数を 1 回実行し、コールバック関数の返り値をステージャに配置して次のコールバック関数に渡し、最後のコールバック関数の返り値を返します。

Array.prototype.reduceRight()

右から左へ配列の各要素に対してコールバック関数を 1 回実行し、コールバック関数の返り値をステージャに配置して次のコールバック関数に渡し、最後のコールバック関数の返り値を返します。

Array.prototype.values()

すべての配列要素の値を含む配列イテレータオブジェクトを返します。

Array.prototype[@@iterator]()

は、上記の values() メソッドと同じ関数です。

Read next

非同期sum関数を実装する

メソッド1:メソッド2:メソッド3を変更することはできません以下は、コードの一部であるため、sum関数は、21を返すように、あなたはsum関数のasyncAdd関数を呼び出す必要があり、asyncAdd関数を変更することはできません改善してください:

Feb 22, 2020 · 3 min read