Published
Edited
Oct 20, 2018
Importers
22 stars
Insert cell
Insert cell
data = [
{name: "jim", amount: "34.0", date: "11/12/2015"},
{name: "carl", amount: "120.11", date: "11/12/2015"},
{name: "stacy", amount: "12.01", date: "01/04/2016"},
{name: "stacy", amount: "34.05", date: "01/04/2016"}
]
Insert cell
Insert cell
new Map(Array.from(
group(data, d => d.name),
([name, data]) => [name, group(data, d => d.date)]
))
Insert cell
Insert cell
function nest(values, ...keys) {
return (function regroup(values, i) {
if (i >= keys.length) return values;
const map = group(values, keys[i]);
return new Map(Array.from(map, ([k, v]) => [k, regroup(v, i + 1)]));
})(values, 0);
}
Insert cell
nest(data, d => d.name, d => d.date)
Insert cell
nest(data, d => d.name)
Insert cell
nest(data)
Insert cell
Insert cell
function rollup(values, reduce, ...keys) {
return (function regroup(values, i) {
if (i >= keys.length) return reduce(values);
const map = group(values, keys[i]);
return new Map(Array.from(map, ([k, v]) => [k, regroup(v, i + 1)]));
})(values, 0);
}
Insert cell
rollup(data, v => v.length, d => d.name, d => d.date)
Insert cell
rollup(data, v => v.length, d => d.name)
Insert cell
rollup(data, v => v.length)
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more