immutable.js更新/设置复杂的Map
immutable.js updating/setting complicated Map
假设我有一个不可变映射:
var testing = Immutable.fromJS({
state: {
name: 'secret',
elements: [
{
id: 678,
name: 'first'
},
{
id: 689,
name: 'first'
},
{
id: 699,
name: 'first'
}
]
}
})
更改状态中的名称非常容易:
testing.setIn(['state', 'name'], 'new name')
但是如何更新其中一个elements
的名称?
如果我要新的元素索引,我可以这样做:
testing.setIn(['state', 'elements', 1, 'name'], 'new element index 1 name')
我一直在想,是否可以在keyPath
数组中注入某种过滤器,这样我就可以根据id匹配要更新的记录?
testing.setIn(['state', 'elements', (something here that will pick right record based on id passed here), 'name'], 'new element index 1 name')
aka:
testing.setIn(['state', 'elements', MAGIC(id: 689), 'name'], 'new element index 1 name')
我可以使用findIndex()函数查找索引,然后自己添加,但我一直想知道是否有更自觉的方法可以做到这一点?
我想我可以这样做:
testing.getIn(['state', 'elements'])
.map(element => element.get('id') === myId ?
element.update('name', name => 'New Name') :
element);
其思想是映射元素,只更新传递三元运算符的元素的名称。
我不知道有什么像你在Immutable
中描述的那样。
相关文章:
- 在Redux中,我应该在哪里编写复杂的异步流
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- 使用map来检查是否为真'不起作用
- 将复杂对象从angular js传递到web api,它总是返回404
- dropdown.js中的复杂事件处理
- 您有更好的动态方式来缩短复杂的代码jquery吗
- 相当复杂的Regex
- 用Javascript重新格式化复杂文本日期字符串的更好方法
- 回调函数中传递参数的困难(Google Map API Markers)
- 使用API在我的网站Google-Map上显示搜索地址的纬度和经度
- 加速我的复杂函数绘图仪(canvas+javascript)
- JQuery Mobile Javascript复杂方程式
- How to declare a Map containing certain properties with flow
- 如何将i18n.map转换为json对象
- 使用filter和map方法将数组中某些元素的第一个字母大写-JavaScript
- 节点中的Map Reduce
- 如何使用javascript过滤复杂的json对象
- 用Jquery map和moment js制作一个简单的时间线
- immutable.js更新/设置复杂的Map
- 使用foreach或map添加复杂对象到数组