sort-by-all.js 1020 Bytes
Newer Older
l2m2's avatar
l2m2 committed
1 2 3 4 5 6 7
var _ = require("lodash");

const impedance_type_sort = [ "single", "single_coplanar", "difference", "difference_coplanar" ];
var arr = [
    {
        impedance_type: 'difference_coplanar',
        signal1: 1,
Leon's avatar
Leon committed
8 9 10 11 12 13
        org_line_width1: 5
    },
    {
        impedance_type: 'difference_coplanar',
        signal1: 1,
        org_line_width1: 5.3
l2m2's avatar
l2m2 committed
14 15 16 17
    },
    {
        impedance_type: 'difference_coplanar',
        signal1: 4,
Leon's avatar
Leon committed
18
        org_line_width1: 4.8
l2m2's avatar
l2m2 committed
19 20 21 22
    },
    {
        impedance_type: 'single',
        signal1: 2,
Leon's avatar
Leon committed
23
        org_line_width1: 5
l2m2's avatar
l2m2 committed
24 25 26 27
    },
    {
        impedance_type: 'single',
        signal1: 3,
Leon's avatar
Leon committed
28 29 30 31 32 33 34
        org_line_width1: 6
    },
    {
        impedance_type: 'difference_coplanar',
        signal1: 1,
        org_line_width1: 4.8
    },
l2m2's avatar
l2m2 committed
35 36 37 38 39
];

arr = _.sortBy(arr, function(k) {
    return _.indexOf(impedance_type_sort, k.impedance_type);
}, function(k){
Leon's avatar
Leon committed
40 41
    return (k.signal1 == 1 || k.signal1 == 4) ? (1 + 4) : k.signal1;
}, 'org_line_width1', 'signal1');
l2m2's avatar
l2m2 committed
42

Leon's avatar
Leon committed
43
print(JSON.stringify(arr, null, '  '));
l2m2's avatar
l2m2 committed
44