问题
现在我们有这样的需求,有一个由对象组成的数组,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| let arr = [ { name: 'Rosi', age: 26 }, { name: 'Reid', age: 24 }, { name: 'Morgan', age: 25 }, { name: 'Morgan', age: 28 } ];
|
我们现在想要根据name
来去重,也就是删除最后一个对象,怎么办呢?
方法1
使用lodash
的_.uniqBy()
:_.uniqBy(arr, 'name)
方法2
自己写一个函数:
1 2 3 4 5
| function removeDuplicates(myArr, prop) { return myArr.filter((obj, pos, arr) => { return arr.map(mapObj => mapObj[prop]).indexOf(obj[prop]) === pos; }); }
|
然后调用即可:removeDuplicates(arr, 'name)