我有带有键和多个值的哈希值。 现在我必须检查该多个值中是否存在特定值。
我的哈希结构是这样的...
@allinfo[hour_idx].push({"id" => w.id, "cat" => w.cat, "value" => w.value})
现在我想检查 allinfo[hour_idx] 键的 id 是否已经存在。我正在尝试使用 if(@allinfo.has_value?(w.id)但它不起作用,我猜这是因为我是多个值的自定义对象。
我的主要目标是不要在特定键的值中使用多个 id。我希望我清楚我除了什么...谢谢
谢谢
如果我是你,我会将你的数据结构更改为哈希而不是数组,然后你可以使用w.id
作为哈希键进行更简单(和更快)的检查。
即。
@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