reduce去重拥有某个相同键值的对象集合

利用 reduce 进行数据优化

数组去重

没错,又是一个老生常谈的问题,数组去重,可是咱们此次去除的不单单是单个的数据,而是拥有某个相同键值的对象集合。例以下面的例子,咱们有如下的数据:数组

首先咱们来看看一个老生常谈的问题,咱们假设有这样的一个对象:优化

const data = [
      {
            name: "Kris",
            age: "24"
      },
      {
            name: "Andy",
            age: "25"
      },
      {
            name: "Kitty",
            age: "25"
      },
      {
            name: "Andy",
            age: "25"
      },
      {
            name: "Kitty",
            age: "25"
      },
      {
            name: "Andy",
            age: "25"
      },
      {
            name: "Kitty",
            age: "25"
      }

如今咱们要去重里面name重复的对象,这时候咱们能够利用reduce,例子以下:code

const dataReducer = (prev, cur, idx) => {
      let obj = {}
      const { name } = cur
      obj[name] = cur
      return {
            ...prev,
            ...obj
      }
}
const reducedData = data.reduce(dataReducer, {});
let newData = Object.values(reducedData);
复制代码

批量生成对象元素

在实际业务中,有一个操做是须要对相似如下的对象进行操做的:对象

{
    a1: 'data',
    a2: 'data',
    ...,
    an: 'data'
}
复制代码

像我这么懒的,确定不会一个个手写,因此就有了如下方法it

const createList = (item, idx) => {
      let obj = {}
      obj[`a{idx}`] = "data"
      return obj
}
const listReducer = (acc, cur) => (!acc ? { ...cur } : { ...cur, ...acc })
const obj = Array.from(new Array(20), createList).reduce(listReducer)
相关文章
相关标签/搜索