mh-two-thousand-and-two
2024-04-12 3d2ec2fd0578d3ba0a414b0cc4e4a2ae60878596
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
 * Dedupes array based on criterion returned from iteratee function.
 * Ex: uniqueBy(
 *     [{ id: 1 }, { id: 1 }, { id: 2 }],
 *     val => val.id
 * ) = [{ id: 1 }, { id: 2 }]
 */
function uniqueBy (arr, fun) {
  const seen = {}
  return arr.filter(el => {
    const e = fun(el)
    return !(e in seen) && (seen[e] = 1)
  })
}
 
module.exports = {
  uniqueBy: uniqueBy
}