以下是一些 reduce 可以做的事情:
累加器
:reduce 最常见的用途是将数组的所有元素累加到一个值中。例如,计算数组中所有数字的总和const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // 输出:15
数组转对象
:reduce 可以用于将数组转换为对象。例如,将数组转换为键值对。const fruits = ['apple', 'banana', 'mango'];
const fruitObject = fruits.reduce((obj, fruit, index) => {
obj[index] = fruit;
return obj;
}, {});
console.log(fruitObject); // 输出:{ '0': 'apple', '1': 'banana', '2': 'mango' }
计数器
:reduce 可以用于计算数组中特定元素的数量。const letters = ['a', 'b', 'a', 'c', 'b', 'a', 'd'];
const letterCount = letters.reduce((count, letter) => {
count[letter] = (count[letter] || 0) + 1;
return count;
}, {});
console.log(letterCount); // 输出:{ 'a': 3, 'b': 2, 'c': 1, 'd': 1 }
数组扁平化
:reduce 可以用于将多维数组扁平化为一维数组。const arrays = [[1, 2], [3, 4], [5, 6]];
const flatArray = arrays.reduce((flat, current) => flat.concat(current), []);
console.log(flatArray); // 输出:[1, 2, 3, 4, 5, 6]
过滤和映射
:reduce 可以结合 filter 和 map 的功能,对数组进行过滤和映射。const numbers = [1, 2, 3, 4, 5];
const evenSquares = numbers.reduce((result, num) => {
if (num % 2 === 0) {
result.push(num * num);
}
return result;
}, []);
console.log(evenSquares); // 输出:[4, 16]