web-dev-qa-db-ja.com

Immutable.jsで深くネストされた値を設定するにはどうすればよいですか?

プレーンなJavaScriptオブジェクトを操作する場合、深くネストされたオブジェクトプロパティを簡単に変更できます。

people.Thomas.nickname = "Mr. T";

しかし、Immutableでは、新しい人物オブジェクトを作成する前に、各プロパティの祖先を確認する必要があります。

var thomas = peopleImmutable.get("Thomas");
var newThomas = thomas.set("nickname", "Mr .T");
peopleImmutable = peopleImmutable.set("Thomas", newThomas);

これを書くよりエレガントな方法はありますか?

43
Matt Zeunert

Immutableのマップには setInメソッド があり、これにより深い値を簡単に設定できます。

peopleImmutable = peopleImmutable.setIn(["Thomas", "nickname"], "Mr. T");

または、splitを使用して配列を生成します。

peopleImmutable = peopleImmutable.setIn("Thomas.nickname".split("."), "Mr. T");
64
Matt Zeunert