【问题标题】:How can i create deeply nested List in Map using Immutable JS Map.setIn?如何使用 Immutable JS Map.setIn 在 Map 中创建深度嵌套的 List?
【发布时间】:2016-07-07 20:13:58
【问题描述】:

我需要在某个时候使用 Map.setIn 方法创建列表。问题是当我在路径中指定索引时,它不明白我正在使用 List。以下示例不起作用:

let data = new Map().setIn(['person', 'products', 0, 'isAvailable'], true);
List.isList(data.getIn(['person', 'products'])) // Returns false because it is Map instance

那么,我如何告诉 Immutable JS 在我的情况下 must 的“产品”是 List 而不是 Map?在我的情况下,我无法初始化 Map,因为结构非常动态,路径可能会有所不同。

【问题讨论】:

  • 我也在寻找解决方案

标签: javascript immutable.js


【解决方案1】:

您提供的上述语法是正确的,但前提是“person.products”已经是一个列表。例如

// In this example, `products` won't be a list
(new Map()).setIn(['person', 'products', 1, 'isAvailable'], true)


// In this example, `products` will be a list
var initial = new Map({
  person: {
    name: '',
    products: [{isAvailable: true}, {isAvailable: false}]
  }
})

initial.setIn(['person', 'products', 1, 'isAvailable'], true)

这是我能找到的唯一解决方案。

您始终可以编写自己的 setIn 函数来查找整数并将值设置为 new List()

【讨论】:

    猜你喜欢
    • 2018-02-19
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 2021-10-02
    • 2013-07-02
    • 1970-01-01
    相关资源
    最近更新 更多