项目中使用reduce方法去重

数组去重的方法有很多,例如使用Map、Set,或者是数组的forEach、filter等方法都可以实现,这里介绍的是reduce这个方法的去重的用法;

MDN中的介绍:reducer()方法对数组中的每个元素按序执行一个由您提供的 reducer函数,每一次运行 reducer会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。

语法:

array.reduce(callback, initialValue)
function callback(previousValue , currentValue, index, array) {  }

callback:包含四个参数;

previousValue:上一次调用callback时返回的值,在第一次调用时,若指定了初始值initialValue,其值则为initialValue,否则为数组索引为0的元素array[0]

currenValue:数组中正在处理的元素,在第一次调用时,若指定了初始值initialValue,其值则为数组索引为0的元素array[0],否则为array[1]

currentIndex:数组中正在处理的元素的索引,若指定了初始值initialValue,则起始索引号为0,否则从索引1起始

array:用于遍历的数组

在实际项目中使用:

     let arr = [
        {
          id: 1,
          name: '张三'
        },
        {
          id: 3,
          name: '王五'
        },
        {
          id: 1,
          name: '张三'
        },
        {
          id: 2,
          name: '李四'
        },
        {
          id: 3,
          name: '王五'
        },
      ]
      let obj = {} 
      let newArr = arr.reduce((pre, cur) => {
        if (!obj[cur.id]) {
          obj[cur.id] = true;
          return [...pre, cur];
        } else {
          return pre;
        }
      }, []);
      console.log(newArr);

结果:

猜你喜欢

转载自blog.csdn.net/m0_46318298/article/details/130599133