Count Total With Two Criterias Using Lodash
I can't figure out how I can count the total devices based on location and unique serial number. { 'dates': [ { 'date': 'Sep 1, 2014', 'devices': [
Solution 1:
Here it is, in a single expression with lodash chaining syntax. The short version is you get all devices into one massive list, then you group them by location, then for each location eliminate the duplicate ids, then count the devices.
_(dates) //Begin chain.pluck("devices") //get the device list for each date.flatten() //combine all device lists into a master list.groupBy("location") //group into an object of {"location": [devices]} pairs.mapValues(function (devicesForLocation) { //replaces [devices] with a count of number of unique serial numbers
return _(devicesForLocation) //Begin chain.pluck("serialNum") //get the serial number for each device.uniq() //remove the duplicate serial numbers.value() //End chain.length; // get the count of unique serial numbers
}) // result is an object of {"location": countOfUniqueDevices} pairs.value() //End chain
The final result is an object of the form: {"New York": 1, "NewYork": 3, "Chicago": 4}, though you could add another statement to print that out in string form, obviously.
I'd encourage you to run through this step-by-step to see the result of each step and understand what it's doing.
Post a Comment for "Count Total With Two Criterias Using Lodash"