看了MDN以后才知道这么多地方可以用到reduce,便在场景下自己实现了一下函数,记录下吧
数组去重虽然面试的时候写了很多,并且实际开发过程中 Set去重用的比较多,reduce的用法以前也不够掌握,终于明白了,开心
const arr2 = [
[1,2],
[3,4]
]
const res2 = arr2.reduce((pre, cur) => {
return [...pre, ...cur]
}, [])
console.log(res2);
/**
* [ 1, 2, 3, 4 ]
*/
/**
* 对象分组
*/
const people = [
{name: "zs", age: 18},
{name: "ms", age: 18},
{name: "ls", age: 19},
{name: "qs", age: 18},
{name: "us", age: 20}
]
const classification = (preRes, cur) => {
if (!preRes[cur.age]) {
preRes[cur.age] = [cur]
return preRes
} else {
preRes[cur.age].push(cur)
return preRes
}
}
const peopleRes = people.reduce(classification, {})
console.log(peopleRes);
/**
{
'18': [
{ name: 'zs', age: 18 },
{ name: 'ms', age: 18 },
{ name: 'qs', age: 18 }
],
'19': [ { name: 'ls', age: 19 } ],
'20': [ { name: 'us', age: 20 } ]
}
*/
/**
* 数组去重
*/
const arr3 = [1,1,2,2,3,3,4,6,5,8,4,5,6]
const removeTheEqualNun = (preRes, curValue) => {
if (!preRes.includes(curValue)) {
preRes.push(curValue);
return preRes
} else {
return preRes
}
}
const res3 = arr3.reduce(removeTheEqualNun, []);
console.log(res3);
/**
[
1, 2, 3, 4,
6, 5, 8
]
*/
/**
* 统计数组中各元素的出现次数
*/
const arr4 = ['one', 'two', 'two', 'three', 'three', 'three']
const computeTheCount = (preRes, curValue) => {
preRes[curValue] = (preRes[curValue] || 0) + 1;
return preRes
}
const res4 = arr4.reduce(computeTheCount, {})
console.log(res4);
/**
{ one: 1, two: 2, three: 3 }
*/