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の値の配列 -> 足す
イッパツではないのでかっこよさについてはノーコメントだが、文脈がわかるプログラムであると思う。