mk-toolブログ

エンジニアと家のことをごちゃごちゃと書いてます

javascript の reduce() でディクショナリを扱う

javascript で ディクショナリの配列を reduce() する際に配下の方法が一般的である。

var initialValue = 0;
var sum = [{x: 1}, {x: 2}, {x: 3}].reduce(function (accumulator, currentValue) {
    return accumulator + currentValue.x;
},initialValue)

console.log(sum) // logs 6

ただ、この書き方、どうしても自分は忘れてしまう。 あれ、どっちの変数でプロパティにアクセスするんだけ、、と。

なので、自分に都合のいいように以下の方法で実装した。

var initialValue = 0;
var sum = [{x: 1}, {x: 2}, {x: 3}].map(x=>x.x).reduce(function (a, b) {
    return a + b;
},initialValue)

console.log(sum) // logs 6

こうすれば、どっちでxにアクセスしないといけないか、を考えなくてもよいし、意味的にも分かりやすくなったと思う。

配列 -> xの値の配列 -> 足す

イッパツではないのでかっこよさについてはノーコメントだが、文脈がわかるプログラムであると思う。