reduceの使用


1.reduceのデフォルトフォーマット

arr.reduce(callback( accumulator, currentValue, [, index[, array]] )[, initialValue])

2.オブジェクトを配列に変換して並べ替え

const sortedCupDispenserStatus = cupDipenserStatus.map(cupDispenser =>
    Object.keys(cupDispenser)
      .sort()
      .reduce((obj, key) => ((obj[key] = cupDispenser[key]), obj), {})
  );

3.配列の長さを求める

const arr = ['a','b','c'];
arr.reduce((acc,cur) => acc+1,0);

4.配列中の要素(オブジェクト)の属性値の和を求める

const drinks = [
  {menu: 'americano', price:1800},
  {menu: 'cafeLatte', price: 2200},
  {menu: 'mintTea', price: 1900}
];
drinks.reduce((acc,cur) => acc+cur.price,0);

5.地図のように書く

drinks.reduce((acc,cur) => [...acc, cur.menu],[]);

6.辞書のように使う

const drinks = [
  {menu: 'americano', price:1800},
  {menu: 'cafeLatte', price: 2200},
  {menu: 'mintTea', price: 1900}
];
const result = drinks.reduce((acc,cur) => 
{ return {...acc, [cur.id] : cur}},{})
//출력
{
  1: { id: 1, menu: 'americano', price: 1800 },
  2: { id: 2, menu: 'cafeLatte', price: 2200 },
  3: { id: 3, menu: 'mintTea', price: 1900 }
}

7.一番高いメニューを探す

const drinks = [
  {id : '1', menu : 'americano', price:1800},
  {id : '2', menu : 'cafeLatte', price: 2200},
  {id : '3', menu : 'mintTea', price : 1900}]


drinks.reduce((acc,drink)=>{
	if(drink.price>acc) {
    	return drink.price}
		return acc
	},0)

8.一番安いメニューを探す

const result = drinks.reduce((acc,cur) => {
  if(acc===null || cur.price < acc) {
    return cur.menu
  }
  return acc
},null)