Published
Edited
Nov 13, 2019
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
function value(node) {
if (node.children.length) {
return _.sum(node.metadata.map(i => {
const child = node.children[i-1]
return child ? value(child) : 0
}))
} else {
return _.sum(node.metadata)
}
}
Insert cell
Insert cell
function metadata(node) {
return [node.metadata, _.map(node.children, metadata)]
}
Insert cell
Insert cell
function parse(stream) {
const numChildren = stream.shift(),
numMetadata = stream.shift()

const children = _.range(0, numChildren).map(() => parse(stream)),
metadata = _.range(0, numMetadata).map(() => stream.shift())

return { children, metadata }
}
Insert cell
Insert cell
Insert cell
Insert cell
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