如何在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中的map有一个setIn方法,可以方便地设置深度值:
peopleImmutable = peopleImmutable.setIn(["Thomas", "nickname"], "Mr. T");
或者,使用split
生成数组:
peopleImmutable = peopleImmutable.setIn("Thomas.nickname".split("."), "Mr. T");
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 将对象从另一个不可变的Map分配给Map是否意味着深度克隆
- 从knockout.js中的另一个对象更新一个深度结构化的javascript对象
- 用javascript将一个对象数组复制到另一个数组中(深度复制)
- JS深度比较2个对象并删除在第二个对象中找到的项目,而不是第一个
- 在客户端深度克隆一个对象(GWT+Javascript)
- 是否有可能创建一个加载深度后路径的垫片
- 排序对象的多维数组与一个可变的深度在Javascript
- 是否有一个实用程序来深度比较对象在谷歌闭包库
- JS搜索通过一个嵌套的JSON结构,深度增加随着时间的推移
- 如何做一个深度搜索对象从一个给定的字符串
- 如何在Immutable.js中设置一个深度嵌套的值?
- 给定一个对象数组,如何根据深度为n的属性对对象排序
- 如何检查一个深度属性是否存在
- 编写一个递归函数,迭代嵌套循环的深度未知
- 如何在angularjs中深度观察一个对象,排除指定的模式
- 通过jQuery删除一个HTML元素,这取决于它的深度