1. reduce

传入一个原数组和函数

const uniqueElementsBy = (arr, fn) => {
  return arr.reduce((pre, cur) => {
    if (!pre.some(x => fn(x, cur))) pre.push(cur)
    return pre
  } , [])
}
// 使用,相等的就被去除
uniqueElementsBy(arr , (a,b) => a === b)
// 
uniqueElementsBy(
  [
    { id: 0, value: 'a' },
    { id: 1, value: 'b' },
    { id: 2, value: 'c' },
    { id: 1, value: 'd' },
    { id: 0, value: 'e' }
  ],
  (a, b) => a.id == b.id
); // [ { id: 0, value: 'a' }, { id: 1, value: 'b' }, { id: 2, value: 'c' } ]
  1. Set
[...new Set(arr)]
  1. 普通for循环