1. ホーム
  2. ジャバスクリプト

[解決済み】Javascriptのオブジェクトに対するreduce()

2022-04-05 17:32:38

質問

Arrayメソッド reduce() を使用して、配列から1つの値を取得します。例

[0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){
  return previousValue + currentValue;
});

オブジェクトで同じことを実現するには、どのような方法があるでしょうか?こんなことをしたいのですが。

{ 
    a: {value:1}, 
    b: {value:2}, 
    c: {value:3} 
}.reduce(function(previous, current, index, array){
  return previous.value + current.value;
});

しかし、Object には reduce() メソッドが実装されています。

どのように解決するのですか?

この場合、実際に必要なのは Object.values . 以下は、簡潔なものです。 ES6 ということを念頭に置いた実装です。

const add = {
  a: {value:1},
  b: {value:2},
  c: {value:3}
}

const total = Object.values(add).reduce((t, {value}) => t + value, 0)

console.log(total) // 6

または単に

const add = {
  a: 1,
  b: 2,
  c: 3
}

const total = Object.values(add).reduce((t, n) => t + n)

console.log(total) // 6