View difference between Paste ID: bV4aMvEu and 5jY5Tviq
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);