Persistent Data Structures

node v4.9.1
version: 1.0.0
endpointsharetweet
/** * class :: Object a * change :: String -> any -> Object a */ Object.prototype.change = function(path, value) { if (path.length === 0) { return value; } else { let _this = Object.assign({}, this); let pathParts = path.split('.'); _this[pathParts[0]] = _this[pathParts[0]].change(pathParts.slice(1).join('.'), value); return _this; } }
let s1 = { a: 1 }; let s2 = s1.change('a', 2);
s1 === s2;
let s3 = { a: { b: 2 } } let s4 = s3.change('a.b', 3);
let s5 = { a: { b: { c: 2 }, d: { e: 2 } } } let s6 = s5.change('a.b.c', 3);
s5 === s6
s5.a.b === s6.a.b
s5.a.d === s6.a.d
Loading…

no comments

    sign in to comment