检查特定键的哈希值是否包含特定值 Ruby



我有带有键和多个值的哈希值。 现在我必须检查该多个值中是否存在特定值。

我的哈希结构是这样的...

@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

最新更新