Spaces:
Sleeping
Sleeping
| ; | |
| /** | |
| * Concat and flattens non-null values. | |
| * Ex: concat(1, undefined, 2, [3, 4]) = [1, 2, 3, 4] | |
| */ | |
| function concat() { | |
| const args = Array.from(arguments).filter(e => e != null); | |
| const baseArray = Array.isArray(args[0]) ? args[0] : [args[0]]; | |
| return Array.prototype.concat.apply(baseArray, args.slice(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 }] | |
| */ | |
| function uniqueBy(arr, fun) { | |
| const seen = {}; | |
| return arr.filter(el => { | |
| const e = fun(el); | |
| return !(e in seen) && (seen[e] = 1); | |
| }) | |
| } | |
| module.exports = { | |
| concat: concat, | |
| uniqueBy: uniqueBy | |
| }; | |