沒錯,又是一個老生常談的問題,數組去重,可是咱們此次去除的不單單是單個的數據,而是擁有某個相同鍵值的對象集合。例以下面的例子,咱們有如下的數據:數組
首先咱們來看看一個老生常談的問題,咱們假設有這樣的一個對象:優化
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)