Published
Edited
Jan 7, 2020
Insert cell
Insert cell
Insert cell
dod = require('https://bundle.run/deep-object-diff@1.1.0')
Insert cell
Insert cell
before = ({ a: 1, b: 2 })
Insert cell
after = ({ a: 1, b: 3 })
Insert cell
dod.diff(before, after)
Insert cell
Insert cell
Insert cell
{
let diffWithPrune = (lhs, rhs, prune) => {
let beforeClone = { ...before }
let afterClone = { ...after }
let diff = dod.diff(beforeClone, afterClone)
prune(diff)
return diff
}
return diffWithPrune(before, after, (x) => { delete x.b })
}
Insert cell
Insert cell
{
let diffWithPrune = (lhs, rhs, prune) => {
let beforeClone = { ...before }
let afterClone = { ...after }
prune(beforeClone)
prune(afterClone)
return dod.diff(beforeClone, afterClone)
}
return diffWithPrune(before, after, (x) => { delete x.b })
}
Insert cell
Insert cell
{
let diffWithProxyBlackhole = (lhs, rhs, isExcluded) => {
let handler = {
get: (obj, key) => {
if (isExcluded(key)) return undefined
else return obj[key]
}
}
let beforeClone = new Proxy(before, handler)
let afterClone = new Proxy(after, handler)
return dod.diff(beforeClone, afterClone)
}
return diffWithProxyBlackhole(before, after, (x) => { return x === "b" })
}
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