1 reduce介绍
reduce的官网
- 定义 :对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
- 形式 :
array.reduce((t, v, i, a) => {}, initValue)
- 参数
- callback:回调函数(
必选
) - initValue:初始值(
可选
)
- callback:回调函数(
- 回调函数的参数
- total(t):累计器完成计算的返回值(
必选
) - value(v):当前元素(
必选
) - index(i):当前元素的索引(
可选
) - array(a):当前元素所属的数组对象(
可选
)
- total(t):累计器完成计算的返回值(
- 理解
- reduce实质上是一个累计器函数,通过自定义的函数对数组中的每一项处理后累计,最后返回这个累计的值
2 用法
2.1 累加累乘
Arr.reduce((t, v) => t + v, 0);
Arr.reduce((t, v) => t * v, 1);
Arr(1, 2, 3, 4, 5); // 15
Arr(1, 2, 3, 4, 5); // 120
2.2 数组一维化
function Flot(v) {
arr.reduce((t, v) => t.concat(Array.isArray(v) ? Flat(v) : v), [])
}
const arr = [0, 1, [2, 3], [4, 5, [6, 7]], [8, [9, 10, [11, 12]]]];
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
2.3 数组转对象
const people = [
{ area: "GZ", name: "YZW", age: 27 },
{ area: "SZ", name: "TYJ", age: 25 }
];
people.reduce((t, v) =>{...t , [v.name] : {...v}}, {});
后续在补充