组合(Composition)函数,就是把两个或以上的函数组合到一块儿,整成一个新的函数。我找到了一个很好的例子,很好地解释了组合函数这个概念。
比如一个应用主要是记录一下日常的花销(expenses),应用里的数据看起来像这样:
const expenses = [
{
name: '租金',
price: 3000,
type: '日常'
},
{
name: '阿里云服务',
price: 600,
type: '服务'
},
{
name: '健身中心',
price: 50,
type: '健康'
},
{
name: '水电',
price: 100,
type: '日常'
}
];
合计花销
现在我要合计一下所有花销,创建一个函数,用一下 map 与 reduce,这个函数像这样:
const sum = (source) =>
source
.map((item) => item.price)
.reduce((accumulator, price) => accumulator + price, 0)
sum 这个函数接收一个 source 参数,在函数里,先用 map,返回 source 里的所有的 price(价格)。然后再用 reduce 去处理返回的 price ,这里就是合计所有的 price 的值。
这个函数用起来像这样:
let total = sum(expenses) // 结果:3750