今天我们来聊聊JavaScript中的一个强大工具——数组的reduce方法。这个方法可以让我们用一行代码完成复杂的操作,简直是编程界的瑞士军刀!
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // 输出:15
🏗️【构建对象】
reduce也可以用来构建对象。比如,你有一组数据,想根据某个属性构建一个键值对的对象。
const users = [{name: "Alice", age: 21}, {name: "Bob", age: 25}];
const usersObj = users.reduce((obj, user) => {
obj[user.name] = user.age;
return obj;
}, {});
console.log(usersObj); // 输出:{ Alice: 21, Bob: 25 }
📦【数组扁平化】
如果你有一个多维数组,想要将其扁平化,reduce也能帮到你。
1etarr-[1,2,[4,6],[1,6,[3,6]],[1,[3,4,[1,2]],[2,2]]]
const newArr=(arr)=>{
return arr.reduce((pre,cur) => t
return pre.concat(Array.isArray(cur)?newArr(cur):cur
},[1)
c0ns0le.10g(newArr(arr))//=>[1,2,4,6,1,6,3,6,1,3,4,1,2,2,2
这里使用了 三目运算 、 concat 数据拼接 、递归 的思路完成。先判断当前处理的元素(有可能是数组)是不是数组(Array.isArray(cur)),如果是再次执行newArr,否则就直接处理当前元素,即将cur拼接进之前处理的数组中。
📊【计算平均值】
想知道数组中数字的平均值?reduce可以帮你轻松计算。
const scores = [80, 90, 70, 60, 50];
const average = scores.reduce((acc, val) => acc + val, 0) / scores.length;
console.log(average); // 输出:70
🎨【数组去重】 reduce可以用来创建一个没有重复元素的新数组。
const numbers = [1, 2, 2, 3, 4, 4, 5];
const uniqueNumbers = numbers.reduce((acc, val) => {
if (!acc.includes(val)) acc.push(val);
return acc;
}, []);
console.log(uniqueNumbers); // 输出:[1, 2, 3, 4, 5]