今回は、既存の配列を使って新しく配列を生成するmap関数と指定した数値を加算して返すreduce
関数を使って、配列の中にある数全てを加算して返す方法について書いていきます。
下のコードのような各列に値があってそれを足していくのが今回の目的なのですが
</pre> var person = [ { name: 'john', num: 3, }, { name: 'toru', num: 3, }, { name: 'mario', num: 3, } ] <pre>
このままforで回してarr = person[i][num];としてlet new_arr += arrと順番に入れようとしてもundefinedになってしまい
数値を足すことができません。
これを実現する方法の一つにmap関数とreduce関数を組み合わせて使う方法があります。
使い方はとてもシンプルで、以下のように三行で実現することができます。↓
</pre> let arr = person.map(obj => obj['num']); console.log(arr); //[3,3,3] const reducer = (accumulator, currentValue) => accumulator + currentValue; let i = arr.reduce(reducer); console.log(i); //9 <pre>
①まず、map関数で数値のみを抜き出す。
②reduceの引数に必要なaccumulator(現在値)とcurrentValue(現在扱っている〇番目の値)を
関数とし変数に代入します。
③最後にreduceを使って順番に加算。これで終了です。
javascriptの優秀なライブラリのおかげで可読性を保ちながら簡単に目的を果たせました。
感謝感激 m(_ _)m