【JSリファレンス】Array.prototype.reduce()

更新日:2024/06/14

Array.prototype.reduce()は、Arrayオブジェクト(Arrayコンストラクターのインスタンス)プロトタイプチェーンに組み込まれるメソッドです。
配列内の全要素を使用して何らかの結果を得ることを目的としたツールメソッドです。

欠番インデックスは、コールバック関数呼び出しされません。

 

■構文

Array.prototype.reduce ( callbackfn [ , initialValue ] )
  1. callbackfn: 各要素毎に呼び出される関数

    元となる配列の欠番を除いた要素数が1でinitialValueが省略された場合、呼び出されない

  2. initialValue: 省略可能。

    callbackfnの初回呼び出しで第一引数に渡される値

・最後のcallbackfn呼び出しで返ってきた値。
・元となる配列の欠番を除いた要素数が1でinitialValueが省略された場合、その要素の値。

※配列の要素数が0の場合、TypeError例外が発生します。

 

■callbackfnの構文

callbackfn ( previousValue , currentValue , currentIndex , array ){ }
  1. previousValue:
    初回はinitialValue
    initialValueが省略されている場合は、元となる配列の欠番を除いた最初の要素。

    2回目以降は、前回のcallbackfn呼び出しの戻り値。

  2. currentValue: 要素の値

    initialValue省略時の初回呼び出しは、元となる配列の欠番を除いた2番目の要素。

  3. currentIndex: currentValueのインデックス
  4. array: 対象となっている配列
次回のpreviousValue

 

■使用例

▶合計を求める

const array = [1,2,3];
const sum = array.reduce( 
  (pre,value) =>pre+value , 0
);
console.log( sum ); // 6

▶偶数値と奇数値の合計をそれぞれ求める

const array = [1,2,3,4,5];
const {even:evenSum,odd:oddSum} = array.reduce( 
  (pre,value) =>{
    const propName = value % 2 === 0 
            ? "even" : "odd";
    pre[propName] += value;
    return pre;
  }
  ,{ even:0 , odd:0 });
console.log( `偶数計:${evenSum}`); // 偶数計:6
console.log( `奇数計:${oddSum}`);  // 奇数計:9

 

■備考

call()等でアレイライクオブジェクトを対象にすることも可能です。

const arrayLike = {0:1,1:2,2:3,length:3};
const sum = Array.prototype.reduce.call(
   arrayLike,
  (pre,value) =>pre+value ,
   0
);
console.log( sum ); // 6

 

関連ページ

更新日:2024/06/14

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。