记录Array.prototype.reduce()的使用
每次看到这个api ,就有点发懵,今天详细解析下此属性。还是先看官方文档吧:
Reduce方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
reducer 函数接收4个参数:
Accumulator (acc) (累计器)
Current Value (cur) (当前值)
Current Index (idx) (当前索引)
Source Array (src) (源数组)
您的 reducer 函数的返回值分配给累计器,该返回值在数组的每个迭代中被记住,并最后成为最终的单个结果值。
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
nitialValue可选
作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。
项目中的运用
histryFilters: histryList.filterList.reduce((obj, item) => {
if (item.type !== 'button') {
obj[item.key] = ''
}
return obj
}, {}),
filters: list.filterList.reduce((obj, item) => {
if (item.type !== 'button') {
obj[item.key] = ''
}
return obj
}, {}),
const keyValueMap = totalMap.reduce((e, i) => {
e[i.value] = i.label
return e
}, {})