lodash stuff

by willtx

HTML

<script src="http://documentcloud.github.com/underscore/underscore-min.js"></script>

CSS

body {
    font-family: monospace;
    white-space: pre-wrap;
}

JavaScript

var idx = 0;

   function addRoomNights(rec) {
       
       //console.log('Object.keys(rec) [' + idx + ']: ' + Object.keys(rec)[0]);
       var account;
        for(var prop in rec){
               account = rec[prop][0];
            }
           
       var newRec = {
           countryCode: account.countryCode,
           brand: account.brand,
           roomNights: account.roomNights,
           spend: account.hotelSpend
       };
       
       //if (idx === 0) {
       //    
       //    console.log(JSON.stringify(rec));
       //    console.log(rec);
       //    console.log(newRec);
       //}
       //idx++;
       
       return newRec;
   }

   _.groupByMulti = function (obj, values) {
       if (!values.length) return obj;
       var firstGrp = _.groupBy(obj, values[0]),
           rest = values.slice(1);
       for (var prop in firstGrp) {
           firstGrp[prop] = _.groupByMulti(firstGrp[prop], rest);
       }
       return firstGrp;
   };

   var groupedData = _.groupByMulti(getProperties(), ['brand', 'countryCode']);
    console.log('--------------- GROUPED -----------------------');
   console.log(JSON.stringify(groupedData));
   console.log('---------------- MAPPED ----------------------');
   var mapData = _.map(groupedData, addRoomNights);

   console.log(JSON.stringify(mapData));

   function getProperties() {
       return [{
           $id: "1",
           id: "54cb22eb67b1fe60183fd0d8",
           accountOfficeId: 180499,
           accountName: "Apple Inc",
           brand: "CO",
           countryCode: "HT",
           state: null,
           city: "Cap-Haïtien",
           hotelSpend: 2000,
           hotelSpendCurrencyCode: null,
           comments: "some comments for apple",
           dateCreated: null,
           createdBy: "wlopez",
           dateProcessed: null,
           processedBy: null,
           complete: false,
           roomNights: 12
       }, {
           $id: "2",
           id: "54cb235b67b1fe60183fd0da",
    ...