TypedArray.prototype.filter()

filter() メソッドは、提供された関数によって実装されたテストに合格したすべての要素を含む新しい型付き配列を生成します。このメソッドのアルゴリズムは Array.prototype.filter() と同じです。ここで TypedArray は、型付き配列型のうちの 1 つです。

試してみましょう

構文

// アロー関数
filter((element) => { /* ... */ } )
filter((element, index) => { /* ... */ } )
filter((element, index, array) => { /* ... */ } )

// コールバック関数
filter(callbackFn)
filter(callbackFn, thisArg)

// インラインコールバック関数
filter(function(element) { /* ... */ })
filter(function(element, index) { /* ... */ })
filter(function(element, index, array){ /* ... */ })
filter(function(element, index, array) { /* ... */ }, thisArg)

引数

callbackFn

型付き配列の各要素をテストする関数です。

(element, index, array) の引数で呼び出されます。 true を返すと要素を維持し、それでなければ false を返します。

thisArg 省略可

callbackFn を実行するときに this として使用する値です。

返値

テストに合格した要素を持つ新しい型付き配列。

解説

filter() は、与えられた callbackFn 関数を型付き配列の各要素に対して一度ずつ呼び出し、callbackFn真値を返したすべての要素からなる新しい型付き配列を生成します。callbackFn は値が代入されている型付き配列の添字に対してのみ呼び出されます。つまり、すでに削除された添字や、まだ値が代入されていない添字に対しては呼び出されません。callbackFn によるテストに合格しなかった型付き配列の要素は単純にスキップされ、新しい型付き配列には含まれません。

callbackFn は 3 つの引数で呼び出されます。

  1. 要素の値
  2. 要素の添字
  3. 走査中の型付き配列オブジェクト

引数 thisArgfilter() に与えられた場合、そのオブジェクトは callbackFn が呼び出された際に this 値として使われます。そうでない場合、 undefinedthis 値として使われます。callbackFn 関数内の最終的な this 値は関数内の this を決定する一般的ルールに従って決められます。

filter() は呼び出された型付き配列を変化させません。

filter() によって処理される要素の範囲は callbackFn が最初の呼び出し前に設定されます。 filter() の呼び出しが始まった後で型付き配列に追加された要素は callbackFn によって処理されません。型付き配列の存在している要素が変更されたり、削除された場合、 callbackFn に渡される値は、 filter() が処理する直前の値になります。

小さな値をすべて取り除く

次の例では、filter() を使って 10 未満の値を持つ要素をすべて取り除いた型付き配列を生成します。

function isBigEnough(element, index, array) {
  return element >= 10;
}
new Uint8Array([12, 5, 8, 130, 44]).filter(isBigEnough);
// Uint8Array [ 12, 130, 44 ]

アロー関数を使用して型付き配列の要素をフィルターする

アロー関数によって、同じテストをより短い構文で実現できます。

new Uint8Array([12, 5, 8, 130, 44]).filter((elem) => elem >= 10);
// Uint8Array [ 12, 130, 44 ]

仕様書

Specification
ECMAScript Language Specification
# sec-%typedarray%.prototype.filter

ブラウザーの互換性

BCD tables only load in the browser

関連情報