JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

Array.prototypeを拡張するカスタムfind関数の実装方法

課題

Arrayクラスのプロトタイプオブジェクト上に定義されるJavaScript関数を書く必要があります。この関数はコールバック関数を引数として受け取り、そのコールバックがtrueを返した最初の要素を返すものとします。

また、現在処理中の要素を第1引数、現在のインデックスを第2引数として、コールバック関数に渡す必要があります。

コード例

以下が実際のコードです。

const arr = [4, 67, 24, 87, 15, 78, 3];
Array.prototype.customFind = function(callback){
   for(let i = 0; i < this.length; i++){
      const el = this[i];
      if(callback(el, i)){
         return el;
      };
      continue;
   };
   return undefined;
};
console.log(arr.customFind(el => el % 5 === 0));

出力

コンソールには次のように表示されます。

15

解説

ここで定義したcustomFindメソッドは、配列を先頭から順番に走査し、各要素とそのインデックスをコールバック関数に渡します。コールバックがtrueを返した時点で、その要素を即座に返却します。配列の末尾まで走査しても条件に一致する要素が見つからなかった場合は、ネイティブのArray.prototype.findと同じようにundefinedを返します。

今回の例では、「5で割り切れる」という条件を満たす最初の要素である15が出力されます。なお、組み込みオブジェクトのプロトタイプを拡張すると、名前の衝突や予期しない動作の原因になる可能性があるため、実際のプロダクトで使う場合は注意が必要です。

  1. JavaScriptのfill()メソッドの使い方!配列を任意の値で埋める方法

    JavaScriptのfill()メソッドとは?JavaScriptのfill()メソッドは、配列の要素を指定した静的な値で一括して埋めるためのメソッドです。開始インデックスと終了インデックスを指定すれば、配列の一部だけを上書きすることもできます。なお、fill()は元の配列そのものを書き換える(破壊的な)メソッドであり、戻り値として変更後の配列が返される点に注意してください。fill()メソッドの基本構文array.fill(val, start, end)各引数の意味は次のとおりです。val:配列に埋める値start:埋め込みを開始するインデックス(省略可、初期値は0)end:埋め込みを終

  2. JavaScriptのArray.prototype.map()メソッドの使い方を徹底解説

    Array.prototype.map()とは? JavaScriptのArray.prototype.map()メソッドは、配列の各要素に対してコールバック関数を実行し、その戻り値から新しい配列を作成するためのメソッドです。元の配列は変更されないため、安全にデータ変換を行いたい場合に非常に便利です。 構文 arr.map(function callback(currentValue[, index[, array]]) 各引数の意味は以下のとおりです。 currentValue:現在処理している要素の値 index(省略可能):現在処理している要素のインデックス番号 array(省略可能