不可变js-创建或更新嵌套在映射中的列表
immutable js - create or update a list nested inside a map
我必须修改一个挑选资产的系统,以允许用户挑选多个资产。目前,我们将一个资产ID添加到生产ID映射中,如下所示:
.setIn(['newRequest', 'productionAssets', action.productionId], action.assetId)
如果它是第一个,我如何修改它,以便创建一个新列表,如果不是第一个,则如何追加?
我最终做了两轮。也许有一个更简洁的版本,但这适用于
if (s.hasIn(['newRequest', 'productionAssets', action.productionId])) {
return s
.updateIn(['newRequest', 'productionAssets', action.productionId], (prodAssets) => prodAssets.push(action.assetId))
} else {
return s
.setIn(['newRequest', 'productionAssets', action.productionId], fromJS([action.assetId]))
}
你可以做这样的一行:
return s.updateIn(['newRequest', 'productionAssets', action.productionId], l => (l || List()).push(fromJS(action.assetId)));
这样,如果路径['newRequest', 'productionAssets', action.productionId]
中的值是undefined
,您可以用List()
初始化它,然后用push()
初始化新项目。如果列表已经存在,您只需在其中添加一个新项目。
相关文章:
- Immutablejs:将列表转换为映射
- 不可变的JS映射或列表
- 映射下拉列表选择到URL
- 数百万个列表映射,100GB数据流畅显示,建议
- 如何将输入映射到我的数据列表选项
- 复选框列表 将数组格式化为 JSON 并在 ng-repeat 中映射后未填充
- 使用 Jquery 将 SelectListItems 的 JSON 列表映射到下拉列表 Select List 并指示
- 下划线.js:使用对象中找到的键从对象列表中创建映射
- 使用不可变 JS 更新映射列表中的一个键
- 将数组中的项列表映射到函数参数
- 谷歌将DistanceMatrix映射到源-目的地对列表的存储结果
- 在angularjs中从逗号分隔的字符串列表中分割和映射数组
- 列表中的Json值<映射<字符串,对象>>在javascript emberjs中
- 在不删除未列出项目的情况下,将多个源的映射删除到单个列表中
- 通过对象列表将 ID 数组映射到字符串数组
- 使用对象中的键从对象列表中创建映射
- 如何在JavaScript中创建带有键和值列表的映射
- 在ReactJS上使用Lodash对映射列表进行排序
- 在javascript中以列表形式从映射中生成值对
- 如何将json数组元素映射到下拉列表中选择的选项