(function() { 'use strict'; // start with an array of mixed float values var dataA = []; // original array // generate some values _.times(50, function() { var f = _.random(1.1, 9.9); dataA.push(d3.round(f, 4)); }); // use loDash _.groupBy https://lodash.com/docs#groupBy var dataG = _.groupBy(dataA, function(n) { return Math.floor(n); }); // create reference array to keys in object var keys = _.keys(dataG); // visualise organised data _.times(keys.length, function(n) { var ul = d3.select('body').append('ul').classed('groups ul-' + n, true); ul.selectAll('ul-' + n + ' li') .data(dataG[keys[n]]) .enter().append('li') .text(function (d) { return d; }); }); // show current array d3.select('#original-array').text(dataA); })();