SHOW:
|
|
- or go back to the newest paste.
| 1 | let userFields = {
| |
| 2 | id: {
| |
| 3 | dbFields: 'id', | |
| 4 | }, | |
| 5 | email: {
| |
| 6 | dbFields: 'email', | |
| 7 | }, | |
| 8 | first_name: {
| |
| 9 | dbFields: 'first_name', | |
| 10 | }, | |
| 11 | last_name: {
| |
| 12 | dbFields: 'last_name', | |
| 13 | }, | |
| 14 | name: {
| |
| 15 | dbFields: ['first_name', 'last_name'], | |
| 16 | resolve: user => | |
| 17 | [user.first_name, user.last_name] | |
| 18 | .filter(n => n.length) | |
| 19 | .join(' '),
| |
| 20 | } | |
| 21 | }; | |
| 22 | ||
| 23 | let selectFields = ['name', 'first_name', 'email']; | |
| 24 | ||
| 25 | function ensureArray(x) {
| |
| 26 | return x instanceof Array ? x : [x]; | |
| 27 | } | |
| 28 | ||
| 29 | function concat(arrays) {
| |
| 30 | return [].concat.apply([], arrays); | |
| 31 | } | |
| 32 | ||
| 33 | function uniquify(array) {
| |
| 34 | - | let s = new Set(); |
| 34 | + | let s = new Set(array); |
| 35 | - | for (let x of array) |
| 35 | + | |
| 36 | - | s.add(x); |
| 36 | + | |
| 37 | ||
| 38 | var dbFieldsPerSelect = | |
| 39 | selectFields | |
| 40 | .map(name => userFields[name].dbFields) | |
| 41 | .map(ensureArray); | |
| 42 | ||
| 43 | var dbFields = uniquify(concat(dbFieldsPerSelect)); | |
| 44 | ||
| 45 | console.log(dbFields); |