我有关键和多个值的哈希值。现在我必须检查该多个值中是否存在特定值。
我的哈希的结构是这样的......
@allinfo[hour_idx].push({"id" => w.id, "cat" => w.cat, "value" => w.value})
现在我想检查allinfo [hour_idx]键是否已存在id。 我试图使用if(@ allinfo.has_value?(w.id)但它不起作用,我猜becoz我是多个值的自定义对象。
我的主要目标是不要在特定键的值中包含多个id。 我希望我清楚我除了...谢谢
谢谢
答案 0 :(得分:0)
如果我是你,我将您的数据结构更改为哈希而不是数组,然后您可以使用w.id
作为哈希键来进行更简单(和更快速)的检查。< / p>
即
@allinfo[hour_idx] = {}
@allinfo[hour_idx][w.id] = { "cat" => w.cat, "value" => w.value }
您不清楚是否要用新的元素覆盖现有的w.id
元素:
@allinfo[hour_idx][new.id] = { "cat" => new.cat, "value => new.value }
...如果已经存在新的那些,则不添加新的:
@allinfo[hour_idx][new.id] ||= { "cat" => new.cat, "value => new.value }
如果您愿意,即使您使用"id" => w.id
作为外键,也可以继续将w.id
元素存储在随附的哈希值中。然后,您可以获得与当前简单相同的哈希数组:
@allinfo[hour_idx].values