如何在 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");