Immutable.js 和获取关键条目的快捷方式

Immutable.js and shortcut for getting at a key entry

所以,我正在使用 Immutable.js 并且有一个正常的 Immutable.Map 并且不得不稍微切换对象,因为它在我不想要它时一直对对象进行排序(以前,我使用的是散列,现在如您所见,是一个数组)。即使 OrderedMap 也不起作用,所以我像这样放置 "new" 对象,现在当然,obj 保留了它的顺序。但是,现在我每次想要获得特定 ID 时都必须遍历它。看起来很浪费,我很好奇是否有一个辅助函数,在这种情况下,我可以只请求一个键(id),然后取回适当的 obj。

"sneakers": Immutable.List([
    [{_id: 1, color: "red", price: 250}],
    [{_id: 1638, color: 728, price: 90}]

等...

所以,如果我想要 _id 为 1638 的对象,我必须对其进行过滤。以前我只能"getIn"。给定这个数据结构,Immutable.js 有快速的方法吗?

这不是完美的解决方案,但如果内部数组中始终有一个对象并且所有 _id 都是唯一的,则可以使用:

 sneakers.find(function(data) {
    return data.find(function(innerArr) {
      return innerArr.get("_id") === 1638
    })
  }).get(0).toJS();

在此解决方案中,您不需要遍历所有列表,它 returns 找到第一次出现时。

一个小提醒:Immutable.List 将您的列表转换为仅一级不可变,内部数组仍然可变。您应该使用 fromJS() 而不是 List。我的解决方案适用于 fromJS() 用法。