function uniqueBy(arr, fun) {
  const seen = {};
  return arr.filter(el => {
    const e = fun(el);
    return !(e in seen) && (seen[e] = 1);
  })
}
Dedupes array based on criterion returned from iteratee function.
Ex: uniqueBy(
    [{ id: 1 }, { id: 1 }, { id: 2 }],
    val => val.id
) = [{ id: 1 }, { id: 2 }]