所以,我使用的是Immutable.js并且有一个普通的Immutable.Map并且不得不稍微调整对象,因为它在我不想要它的时候一直在对对象进行排序(之前,我使用了哈希,现在如你所见,一个数组)。即使是OrderedMap也不起作用,所以我把“新”对象放得这样,现在当然,obj保留了它的顺序。但是,现在我每次想要获得特定ID时都必须通过它进行迭代。看起来很浪费,我很好奇是否有一个帮助函数我可以在这种情况下请求一个键(id),然后返回相应的obj。
"sneakers": Immutable.List([
[{_id: 1, color: "red", price: 250}],
[{_id: 1638, color: 728, price: 90}]
等...
所以,如果我想要_id是1638的obj,我必须通过它进行过滤。以前我可以“getIn”。在给定这种数据结构的情况下,Immutable.js是否有快速的方法?
答案 0 :(得分:2)
这不是一个完美的解决方案,但如果内部数组中始终有一个对象且所有_id
都是唯一的,则可以使用:
sneakers.find(function(data) {
return data.find(function(innerArr) {
return innerArr.get("_id") === 1638
})
}).get(0).toJS();
在此解决方案中,您不需要迭代所有List,它会在第一次出现时返回。
一个小提示:Immutable.List仅将列表转换为一个级别的不可变,内部数组仍然是可变的。您应该使用fromJS()而不是List。我的解决方案适用于fromJS()用法。