没错,又是一个老生常谈的问题,数组去重,可是咱们此次去除的不单单是单个的数据,而是拥有某个相同键值的对象集合。例以下面的例子,咱们有如下的数据:数组
首先咱们来看看一个老生常谈的问题,咱们假设有这样的一个对象:优化
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)