{
const collisionsWithZipAndBorough = data.filter(d => d.zip !== "" && d.borough !== "");
const numCollisionsByBoroughZip = d3.rollup(collisionsWithZipAndBorough,
crashesForZip => crashesForZip.length,
d => d.borough, d => d.zip);
return Array.from(numCollisionsByBoroughZip, ([borough, zips]) => {
const zipCollisions = Array.from(zips, ([zip, numCollisions]) => ({zip, numCollisions}));
return {
borough: borough,
zips: zipCollisions.sort((a, b) => d3.descending(a.numCollisions, b.numCollisions)).slice(0, 3)
}
});
}