返回
JavaScript中6 个强大的reduce() 用法
前端
2024-02-10 16:56:36
导言
reduce() 方法是 JavaScript 中数组的内建方法,它对数组的每个元素执行指定的回调函数,将前一个元素的结果作为当前元素的计算参数。最终返回一个单一的累积值。
示例 1:求和
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, current) => {
return (accumulator += current);
}, 0);
// sum: 15
示例 2:寻找最大值
const max = numbers.reduce((max, current) => {
return (max > current) ? max : current;
}, 0);
// max: 5
示例 3:计算平均值
const average = numbers.reduce((average, current) => {
return ((average * numbers.length) + current) / (numbers.length + 1);
}, 0);
// average: 3
示例 4:构建对象
const person = {
name: "John",
age: 30,
occupation: "Developer"
};
const obj = Object.keys(person).reduce((obj, key) => {
obj[key] = person[key];
return obj;
}, {});
// obj: { name: "John", age: 30, occupation: "Developer" }
示例 5:扁平化多维数组
const arr = [[1, 2], [3, 4], [5, 6]];
const flattened = arr.reduce((flattened, current) => {
return flattened.concat(current);
}, []);
// flattened: [1, 2, 3, 4, 5, 6]
示例 6:分组数据
const data = [
{ category: "A", value: 1 },
{ category: "B", value: 2 },
{ category: "A", value: 3 },
{ category: "C", value: 4 }
];
const groupedData = data.reduce((groups, item) => {
const category = item.category;
groups[category] = groups[category] || [];
groups[category].push(item);
return groups;
}, {});
// groupedData: { A: [{ category: "A", value: 1 }, { category: "A", value: 3 }],
// B: [{ category: "B", value: 2 }],
// C: [{ category: "C", value: 4 }] }
结论
reduce() 方法是 JavaScript 中一个强大的数据处理工具,它提供了处理数组的高效且简洁的方式。通过使用示例中所示的技巧,您可以充分利用 reduce() 来处理复杂数据结构、提取见解并解决各种数据处理任务。