如何在 Immutable.js 中设置深度嵌套值?
How can I set a deeply nested value in Immutable.js?
使用普通 JavaScript 对象时,很容易更改深度嵌套的对象 属性:
people.Thomas.nickname = "Mr. T";
但是对于 Immutable,在我有一个新的 people 对象之前,我必须遍历每个 属性 的祖先:
var thomas = peopleImmutable.get("Thomas");
var newThomas = thomas.set("nickname", "Mr .T");
peopleImmutable = peopleImmutable.set("Thomas", newThomas);
有没有更优雅的写法?
Immutable 中的映射有一个 setIn method 可以很容易地设置深度值:
peopleImmutable = peopleImmutable.setIn(["Thomas", "nickname"], "Mr. T");
或者,使用split
生成数组:
peopleImmutable = peopleImmutable.setIn("Thomas.nickname".split("."), "Mr. T");
使用普通 JavaScript 对象时,很容易更改深度嵌套的对象 属性:
people.Thomas.nickname = "Mr. T";
但是对于 Immutable,在我有一个新的 people 对象之前,我必须遍历每个 属性 的祖先:
var thomas = peopleImmutable.get("Thomas");
var newThomas = thomas.set("nickname", "Mr .T");
peopleImmutable = peopleImmutable.set("Thomas", newThomas);
有没有更优雅的写法?
Immutable 中的映射有一个 setIn method 可以很容易地设置深度值:
peopleImmutable = peopleImmutable.setIn(["Thomas", "nickname"], "Mr. T");
或者,使用split
生成数组:
peopleImmutable = peopleImmutable.setIn("Thomas.nickname".split("."), "Mr. T");