jLinux

Untitled

Dec 26th, 2015
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2. const _ = require('lodash');
  3.  
  4. function uniqObjs( arr ) {
  5.     const uniques = [];
  6.  
  7.     return _.filter( arr, ( obj ) => {
  8.         if( _.isUndefined( _.findWhere( uniques, obj ))){
  9.             uniques.push( obj );
  10.             return true;
  11.         }
  12.  
  13.         return false;
  14.     });
  15. }
  16.  
  17. _.mixin({ 'uniqObjs': uniqObjs });
  18.  
  19. var stuff = [
  20.     { application: 'jenkins', version: 6 },
  21.     { application: 'nginx',  version: 1 },
  22.     { application: 'chef',  version: 2 },
  23.     { application: 'apache', version: 2 },
  24.     { application: 'nginx',  version: 5 },
  25.     { application: 'nagios',  version: 2 },
  26.     { application: 'tripwire', version: 2 },
  27.     { application: 'nginx',  version: 4 },
  28.     { application: 'nginx',  version: 2 },
  29.     { application: 'apache', version: 2 },
  30.     { application: 'tripwire',  version: 1 },
  31.     { application: 'chef',  version: 2 },
  32.     { application: 'nagios', version: 4 },
  33.     { application: 'nginx',  version: 1 },
  34.     { application: 'nginx',  version: 2 },
  35.     { application: 'apache', version: 3 },
  36.     { application: 'nginx',  version: 1 },
  37.     { application: 'tripwire',  version: 2 },
  38.     { application: 'apache', version: 2 },
  39.     { application: 'nginx',  version: 6 },
  40.     { application: 'nagios',  version: 2 },
  41.     { application: 'apache', version: 2 },
  42.     { application: 'tripwire',  version: 1 },
  43.     { application: 'nginx',  version: 5 },
  44.     { application: 'apache', version: 2 },
  45.     { application: 'nginx',  version: 1 },
  46.     { application: 'chef',  version: 3 },
  47.     { application: 'tripwire', version: 2 },
  48.     { application: 'jenkins',  version: 5 },
  49.     { application: 'nginx',  version: 2 },
  50.     { application: 'nagios', version: 2 },
  51.     { application: 'nginx',  version: 2 },
  52.     { application: 'nginx',  version: 2 },
  53.     { application: 'tripwire', version: 2 },
  54.     { application: 'nginx',  version: 4 },
  55.     { application: 'nginx',  version: 2 },
  56.     { application: 'apache', version: 2 },
  57.     { application: 'nginx',  version: 3 },
  58.     { application: 'chef',  version: 2 },
  59.     { application: 'nagios', version: 4 },
  60.     { application: 'nginx',  version: 1 },
  61.     { application: 'nginx',  version: 4 },
  62.     { application: 'tripwire', version: 2 },
  63.     { application: 'nginx',  version: 5 },
  64.     { application: 'nginx',  version: 2 },
  65.     { application: 'apache', version: 2 },
  66.     { application: 'nginx',  version: 3 },
  67.     { application: 'nginx',  version: 2 },
  68.     { application: 'apache', version: 4 },
  69.     { application: 'chef',  version: 1 },
  70.     { application: 'nginx',  version: 2 },
  71.     { application: 'tripwire', version: 5 },
  72.     { application: 'jenkins',  version: 1 },
  73.     { application: 'nginx',  version: 2 },
  74.     { application: 'apache', version: 5 },
  75.     { application: 'nginx',  version: 1 },
  76.     { application: 'tripwire',  version: 4 },
  77.     { application: 'nagios', version: 2 },
  78.     { application: 'nginx',  version: 1 },
  79.     { application: 'nginx',  version: 2 },
  80.     { application: 'apache', version: 4 },
  81.     { application: 'nginx',  version: 1 },
  82.     { application: 'tripwire',  version: 2 },
  83.     { application: 'nagios', version: 3 },
  84.     { application: 'chef',  version: 1 },
  85.     { application: 'nginx',  version: 5 },
  86.     { application: 'apache', version: 2 },
  87.     { application: 'jenkins',  version: 1 },
  88.     { application: 'nginx',  version: 5 },
  89.     { application: 'apache', version: 2 },
  90.     { application: 'nagios',  version: 1 },
  91.     { application: 'nginx',  version: 3 },
  92.     { application: 'apache', version: 2 },
  93.     { application: 'nginx',  version: 1 },
  94.     { application: 'tripwire',  version: 2 },
  95.     { application: 'apache', version: 4 },
  96.     { application: 'nginx',  version: 1 },
  97.     { application: 'nginx',  version: 2 },
  98.     { application: 'apache', version: 4 },
  99.     { application: 'nginx',  version: 1 },
  100.     { application: 'nginx',  version: 5 },
  101.     { application: 'nagios', version: 2 },
  102.     { application: 'nginx',  version: 3 },
  103.     { application: 'nginx',  version: 2 },
  104.     { application: 'apache', version: 2 },
  105.     { application: 'nginx',  version: 3 },
  106.     { application: 'chef',  version: 2 },
  107.     { application: 'apache', version: 2 },
  108.     { application: 'jenkins',  version: 1 },
  109.     { application: 'nginx',  version: 2 },
  110.     { application: 'tripwire', version: 2 },
  111.     { application: 'nginx',  version: 1 },
  112.     { application: 'nginx',  version: 2 },
  113.     { application: 'nagios', version: 5 },
  114.     { application: 'nginx',  version: 1 },
  115.     { application: 'nginx',  version: 4 },
  116.     { application: 'apache', version: 2 },
  117.     { application: 'nginx',  version: 1 },
  118.     { application: 'tripwire',  version: 2 },
  119.     { application: 'apache', version: 3 },
  120.     { application: 'nagios',  version: 1 },
  121.     { application: 'nginx',  version: 2 },
  122.     { application: 'apache', version: 4 },
  123.     { application: 'nginx',  version: 1 },
  124.     { application: 'nginx',  version: 5 },
  125.     { application: 'apache', version: 2 },
  126.     { application: 'nginx',  version: 1 },
  127.     { application: 'chef',  version: 2 },
  128.     { application: 'apache', version: 3 },
  129.     { application: 'tripwire',  version: 1 },
  130.     { application: 'nginx',  version: 2 },
  131.     { application: 'apache', version: 2 },
  132.     { application: 'jenkins',  version: 1 },
  133.     { application: 'nginx',  version: 2 },
  134.     { application: 'apache', version: 3 },
  135.     { application: 'nginx',  version: 1 },
  136.     { application: 'nginx',  version: 2 },
  137.     { application: 'nagios', version: 2 },
  138.     { application: 'nginx',  version: 5 },
  139.     { application: 'nginx',  version: 4 },
  140.     { application: 'tripwire', version: 2 },
  141.     { application: 'nginx',  version: 1 },
  142.     { application: 'nginx',  version: 5 },
  143.     { application: 'apache', version: 2 },
  144.     { application: 'nginx',  version: 1 },
  145.     { application: 'nginx',  version: 2 },
  146.     { application: 'apache', version: 5 },
  147.     { application: 'nginx',  version: 4 },
  148.     { application: 'nginx',  version: 3 },
  149.     { application: 'tripwire', version: 2 },
  150.     { application: 'nginx',  version: 1 },
  151.     { application: 'nginx',  version: 5 },
  152.     { application: 'apache', version: 4 },
  153.     { application: 'nagios',  version: 1 },
  154.     { application: 'jenkins',  version: 2 },
  155.     { application: 'chef', version: 2 },
  156.     { application: 'nginx',  version: 4 },
  157.     { application: 'tripwire',  version: 2 },
  158.     { application: 'apache', version: 2 },
  159.     { application: 'nginx',  version: 1 },
  160.     { application: 'nginx',  version: 2 },
  161.     { application: 'apache', version: 3 },
  162.     { application: 'nginx',  version: 4 },
  163.     { application: 'nginx',  version: 5 },
  164.     { application: 'tripwire', version: 2 },
  165.     { application: 'nginx',  version: 1 },
  166.     { application: 'nginx',  version: 2 },
  167.     { application: 'nagios', version: 2 },
  168.     { application: 'chef',  version: 1 },
  169.     { application: 'nginx',  version: 2 },
  170.     { application: 'apache', version: 2 },
  171.     { application: 'nginx',  version: 1 },
  172.     { application: 'tripwire',  version: 2 },
  173.     { application: 'apache', version: 2 },
  174.     { application: 'nginx',  version: 3 },
  175.     { application: 'nginx',  version: 4 },
  176.     { application: 'apache', version: 5 },
  177.     { application: 'nginx',  version: 1 },
  178.     { application: 'jenkins',  version: 2 },
  179.     { application: 'chef', version: 2 },
  180.     { application: 'nginx',  version: 1 },
  181.     { application: 'nginx',  version: 2 },
  182.     { application: 'apache', version: 2 },
  183.     { application: 'nagios',  version: 1 },
  184.     { application: 'nginx',  version: 2 },
  185.     { application: 'tripwire', version: 2 },
  186.     { application: 'nginx',  version: 3 },
  187.     { application: 'nginx',  version: 4 },
  188.     { application: 'apache', version: 5 },
  189.     { application: 'nginx',  version: 1 },
  190.     { application: 'nginx',  version: 2 },
  191.     { application: 'tripwire', version: 2 },
  192.     { application: 'nginx',  version: 3 },
  193.     { application: 'nginx',  version: 4 },
  194.     { application: 'apache', version: 5 },
  195.     { application: 'chef',  version: 1 },
  196.     { application: 'nagios',  version: 2 },
  197.     { application: 'apache', version: 2 },
  198.     { application: 'nginx',  version: 1 },
  199.     { application: 'nginx',  version: 2 },
  200.     { application: 'apache', version: 2 },
  201.     { application: 'nginx',  version: 1 },
  202.     { application: 'jenkins',  version: 2 },
  203.     { application: 'apache', version: 2 },
  204.     { application: 'nginx',  version: 1 },
  205.     { application: 'nginx',  version: 2 },
  206.     { application: 'chef', version: 2 },
  207.     { application: 'nginx',  version: 3 },
  208.     { application: 'nginx',  version: 4 },
  209.     { application: 'nagios', version: 5 },
  210.     { application: 'nginx',  version: 1 },
  211.     { application: 'nginx',  version: 2 },
  212.     { application: 'chef', version: 2 },
  213.     { application: 'nginx',  version: 1 },
  214.     { application: 'nagios',  version: 2 },
  215.     { application: 'jenkins', version: 2 },
  216.     { application: 'nginx',  version: 1 },
  217.     { application: 'nginx',  version: 2 },
  218.     { application: 'apache', version: 2 },
  219.     { application: 'tripwire',  version: 1 },
  220.     { application: 'nginx',  version: 2 },
  221.     { application: 'apache', version: 2 },
  222.     { application: 'chef',  version: 1 },
  223.     { application: 'nginx',  version: 3 },
  224.     { application: 'apache', version: 4 },
  225.     { application: 'nginx',  version: 5 },
  226.     { application: 'tripwire',  version: 2 },
  227.     { application: 'apache', version: 2 },
  228.     { application: 'nginx',  version: 1 },
  229.     { application: 'nginx',  version: 2 },
  230.     { application: 'tripwire', version: 2 },
  231.     { application: 'chef',  version: 1 },
  232.     { application: 'nginx',  version: 3 },
  233.     { application: 'nagios', version: 4 },
  234.     { application: 'nginx',  version: 5 },
  235.     { application: 'nginx',  version: 2 },
  236.     { application: 'apache', version: 2 },
  237.     { application: 'tripwire',  version: 1 },
  238.     { application: 'nginx',  version: 2 },
  239.     { application: 'nagios', version: 2 },
  240.     { application: 'nginx',  version: 1 },
  241.     { application: 'nginx',  version: 3 },
  242.     { application: 'chef', version: 2 }
  243. ];
  244.  
  245. console.log(
  246.     _(stuff)
  247.         .uniqObjs()
  248.         .sortByAll( _.keys( stuff[0] ) )
  249.         .value()
  250. );
  251.  
  252. /**
  253.  -> [ { application: 'apache', version: 2 },
  254.      { application: 'apache', version: 3 },
  255.      { application: 'apache', version: 4 },
  256.      { application: 'apache', version: 5 },
  257.      { application: 'chef', version: 1 },
  258.      { application: 'chef', version: 2 },
  259.      { application: 'chef', version: 3 },
  260.      { application: 'jenkins', version: 1 },
  261.      { application: 'jenkins', version: 2 },
  262.      { application: 'jenkins', version: 5 },
  263.      { application: 'jenkins', version: 6 },
  264.      { application: 'nagios', version: 1 },
  265.      { application: 'nagios', version: 2 },
  266.      { application: 'nagios', version: 3 },
  267.      { application: 'nagios', version: 4 },
  268.      { application: 'nagios', version: 5 },
  269.      { application: 'nginx', version: 1 },
  270.      { application: 'nginx', version: 2 },
  271.      { application: 'nginx', version: 3 },
  272.      { application: 'nginx', version: 4 },
  273.      { application: 'nginx', version: 5 },
  274.      { application: 'nginx', version: 6 },
  275.      { application: 'tripwire', version: 1 },
  276.      { application: 'tripwire', version: 2 },
  277.      { application: 'tripwire', version: 4 },
  278.      { application: 'tripwire', version: 5 } ]
  279.  */
Advertisement
Add Comment
Please, Sign In to add comment