result= [
{
"range_id": 18,
"id": 1,
"start": 1863,
"end": 1875,
},
{
"range_id": 12,
"id": 2,
"start": 1820,
"end": 1844,
},
{
"range_id": 19,
"id": 3,
"start": 1875,
"end": 1887,
},
{
"range_id": 12,
"id": 4,
"start": 1844,
"end": 1856,
},
{
"range_id": 18,
"id": 5,
"start": 1887,
"end": 1899,
},
{
"range_id": 12,
"id": 6,
"start": 1856,
"end": 1868,
}
]
我喜欢做的是检查result中的“range_id”值,并计算相同的range_id,如果range_id.count〈= 3,我执行某些任务,否则跳过,但不确定如何实现。我们可以在ruby中做如下操作吗:
next unless result.range_id.count <=3
{
do something
}
2条答案
按热度按时间6pp0gazn1#
您可以使用以下一行程序来计算每个
range_id
出现的次数:然后,您可以迭代该散列,并根据其计数处理每个
range_id
:jvidinwx2#
这里还有几个选择
1.您可以使用嵌套选择来获取具有3个或更少值的记录
1.你可以避免上面的O(n^2),而不是使用一个数组来存储项目,你可以尝试一个哈希来代替使用范围_id作为键,和一个'Set'来存储具有相同范围_id的项目,例如{“18”=〉{{“range_id”=〉18,“id”=〉1,“start”=〉1863,“end”=〉1875},...},...}