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)
相關文章
相關標籤/搜索