Подтвердить что ты не робот

Как установить глубокое вложенное значение в Immutable.js?

При работе с объектами простого JavaScript легко изменить свойство глубоко вложенного объекта:

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

Но с неизменяемым я должен пройти через каждого предка имущества, прежде чем у меня появится новый объект:

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

Есть ли более элегантный способ написать это?

4b9b3361

Ответ 1

Карты в Immutable имеют метод setIn, который позволяет легко устанавливать глубокие значения:

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

Или, используя split для генерации массива:

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