1、 数组对象去重工具函数

  1. arrayObjUniqueByProperty(originArr, property) {
  2. let obj = {}
  3. let array = originArr.reduce((preVal, curVal) => {
  4. obj[curVal[`${property}`]] ? '' : (obj[curVal[`${property}`]] = true && preVal.push(curVal))
  5. return preVal
  6. }, [])
  7. return array
  8. },

2、数组去重

  1. const testArr = [1,2,2,3,4,4,5,5,5,6,7]
  2. testArr.reduce((acc, cur) => {
  3. if (!(acc.includes(cur))) {
  4. acc.push(cur)
  5. }
  6. return acc
  7. }, [])
  8. // [1, 2, 3, 4, 5, 6, 7]


3、 计算数组中每个元素出现的个数

  1. const testArr = [1, 3, 4, 1, 3, 2, 9, 8, 5, 3, 2, 0, 12, 10]
  2. testArr.reduce((acc, cur) => {
  3. if (!(cur in acc)) {
  4. acc[cur] = 1
  5. } else {
  6. acc[cur] += 1
  7. }
  8. return acc
  9. }, {})
  10. // {0: 1, 1: 2, 2: 2, 3: 3, 4: 1, 5: 1, 8: 1, 9: 1, 10: 1, 12: 1}

4、 按属性给数组分类

  1. const bills = [
  2. { type: 'shop', momey: 223 },
  3. { type: 'study', momey: 341 },
  4. { type: 'shop', momey: 821 },
  5. { type: 'transfer', momey: 821 },
  6. { type: 'study', momey: 821 }
  7. ];
  8. bills.reduce((acc, cur) => {
  9. // 如果不存在这个键,则设置它赋值 [] 空数组
  10. if (!acc[cur.type]) {
  11. acc[cur.type] = [];
  12. }
  13. acc[cur.type].push(cur)
  14. return acc
  15. }, {})

5、求数组对象中的最值

  1. const testArr = [
  2. { age: 20 },
  3. { age: 21 },
  4. { age: 22 }
  5. ]
  6. testArr.reduce((acc, cur) => {
  7. if (!acc) {
  8. acc = cur
  9. return acc
  10. }
  11. if (acc.age < cur.age) {
  12. acc = cur
  13. return acc
  14. }
  15. return acc
  16. }, 0)
  17. // {age: 22}