LoginSignup
7
3

More than 5 years have passed since last update.

【JavaScript】繰り返し処理をする時の便利メソッド(reduce編)

Last updated at Posted at 2018-10-16

はじめに

JavaScriptで繰り返し処理をする時に便利なメソッドを紹介致します。

対象読者

・ES2015をこれから使っていきたい
・for文を使わず繰り返し処理をスッキリ書きたい

注意点

これから紹介する記法は主にES2015以降の記法です。
レガシーブラウザに対応させる場合は、トランスパイラ(Babel等)を使用し、ES5記法にトランスパイルをおこなってください。
(参考記事)
https://qiita.com/mizchi/items/3bbb3f466a3b5011b509#%E3%81%84%E3%81%BE%E3%81%99%E3%81%90es2015%E3%82%92%E4%BD%BF%E3%81%86
https://qiita.com/hietahappousai/items/9570da4b9275425489b2

reduce

【出来ること】
・配列から値を取り出し一つの値に集約する

例として、配列の中身を取り出し、合計値を求めるプログラムを書きます。

forの場合

const evenNumbers = [2,4,6];
let sum = 0;

for (let i = 0; i < evenNumbers.length; i++) {
    sum += evenNumbers[i];
}
console.log(sum); //12

reduceの場合

const evenNumbers = [2,4,6];
const sum = evenNumbers.reduce(function(accumulation,evenNumber) {
    return accumulation + evenNumber;
})
console.log(sum); //12


// アロー関数で記述した場合
const sum02 = evenNumbers.reduce((accumulation,evenNumber) => accumulation + evenNumber)
console.log(sum02); //12

書き方

配列.reduce(function(累積値, 現在処理されている配列の値) {
})

ポイント

・コールバック関数の第一引数に値を集約する為の変数を用意する
・returnで返却した値が、コールバック関数の第一引数に代入される
・計算結果(合計値、平均値、etc..)を求める際によく使われる

第二引数を設定する事で初期値も設定する事ができます。

const evenNumbers = [2,4,6];
const sum = evenNumbers.reduce(function(accumulation,evenNumber) {
    return accumulation + evenNumber;
},10)

console.log(sum); //22

まとめ

・reduceは配列から値を取り出し一つの値に集約する
・計算結果(合計値、平均値、etc..)を求める際によく使われる

以下の記事でreduceの色々な使い方が紹介されていましたので、
よろしければ参考にどうぞ

「JavaScriptの1行小ネタ集」
https://qiita.com/Tksi/items/130bcf82bbfb0379b58b

過去記事はこちら

・(forEach,map,filter編)
https://qiita.com/KORPLUS/items/6739209e9bc716e6a8b5
・(find,every,some編)
https://qiita.com/KORPLUS/items/2f85ddeb82e2306f3822

7
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3