1、 数组对象去重工具函数
arrayObjUniqueByProperty(originArr, property) { let obj = {} let array = originArr.reduce((preVal, curVal) => { obj[curVal[`${property}`]] ? '' : (obj[curVal[`${property}`]] = true && preVal.push(curVal)) return preVal }, []) return array },
2、数组去重
const testArr = [1,2,2,3,4,4,5,5,5,6,7]testArr.reduce((acc, cur) => { if (!(acc.includes(cur))) { acc.push(cur) } return acc}, [])// [1, 2, 3, 4, 5, 6, 7]
3、 计算数组中每个元素出现的个数
const testArr = [1, 3, 4, 1, 3, 2, 9, 8, 5, 3, 2, 0, 12, 10]testArr.reduce((acc, cur) => { if (!(cur in acc)) { acc[cur] = 1 } else { acc[cur] += 1 } return acc}, {})// {0: 1, 1: 2, 2: 2, 3: 3, 4: 1, 5: 1, 8: 1, 9: 1, 10: 1, 12: 1}
4、 按属性给数组分类
const bills = [ { type: 'shop', momey: 223 }, { type: 'study', momey: 341 }, { type: 'shop', momey: 821 }, { type: 'transfer', momey: 821 }, { type: 'study', momey: 821 }];bills.reduce((acc, cur) => { // 如果不存在这个键,则设置它赋值 [] 空数组 if (!acc[cur.type]) { acc[cur.type] = []; } acc[cur.type].push(cur) return acc}, {})
5、求数组对象中的最值
const testArr = [ { age: 20 }, { age: 21 }, { age: 22 }]testArr.reduce((acc, cur) => { if (!acc) { acc = cur return acc } if (acc.age < cur.age) { acc = cur return acc } return acc}, 0)// {age: 22}