【问题标题】:check if hash value of specific key contains specific value ruby检查特定键的哈希值是否包含特定值 ruby
【发布时间】:2015-05-15 07:36:49
【问题描述】:

我有键和多个值的散列。现在我必须检查多个值中是否存在特定值。

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

@allinfo[hour_idx].push({"id" => w.id, "cat" => w.cat, "value" => w.value})

现在我想检查 allinfo[hour_idx] 键的 id 是否已经存在。 我正在尝试使用 if(@allinfo.has_value?(w.id) 但它不起作用,我想这是因为我是多个值的自定义对象。

我的主要目标是不要在特定键的值中包含多个 id。 我希望我清楚我除了...谢谢

谢谢

【问题讨论】:

  • .. @allinfo[hour_idx] 应该是一个多维数组吗?还是一个哈希数组?

标签: ruby-on-rails ruby ruby-on-rails-3 hash


【解决方案1】:

如果我是您,我会将您的数据结构更改为哈希而不是数组,然后您可以使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 2020-05-24
    相关资源
    最近更新 更多