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() 用法。
所以,我正在使用 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() 用法。