ruby - 比较两个哈希数组并返回新对象

标签 ruby arrays hash

我有两个哈希数组。

burgers = [
            {:id => 1, :name => "cheese burger"},
            {:id => 2, :name => "royale"},
            {:id => 3, :name => "big mac"},
            {:id => 4, :name => "angus beef"}
          ]

eaten =   [
            {:burger_id => 1},
            {:burger_id => 2}
          ]

我想返回一个数组或未吃的汉堡,其中 burgers[:id] 不等于 eaten[:burger_id]。在 burgers_not_eaten_method 中,我得到了预期的返回值。

def burgers_not_eaten
  #Not sure how to compare burger[:id] with eaten[:burger_id]
  burgers.reject { |burger| burger[:id] == #eaten burger_id }
  # Expected:  [{:id => 3, :name => "big mac"},{:id => 4, :name => "angus beef"}]
end

最佳答案

你已经很接近了,为了简单起见,我将所有“吃掉的”id 放入一个数组中,并检查是否包含在该数组中,如下所示:

BURGERS = [
            {:id => 1, :name => "cheese burger"},
            {:id => 2, :name => "royale"},
            {:id => 3, :name => "big mac"},
            {:id => 4, :name => "angus beef"}
          ]

EATEN = [
          {:burger_id => 1},
          {:burger_id => 2}
        ]

def burgers_not_eaten
  eaten_ids = EATEN.map { |e| e[:burger_id] }
  BURGERS.reject { |burger| eaten_ids.include?(burger[:id]) }
end

burgers_not_eaten
# => [{:id=>3, :name=>"big mac"}, {:id=>4, :name=>"angus beef"}] 

关于ruby - 比较两个哈希数组并返回新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27828632/

相关文章:

ruby - 搜索从给定索引开始的数组元素

python - 字典与 NumPy 数组性能 Python

c - 二维数组正在截断一些字符

c - C上的2D数组(初学者)

ruby-on-rails - 创建具有 3 层嵌套的哈希的简洁方法,如果层不存在,则创建层

ruby - 使用 Ruby 正则表达式处理空格的问题

ruby - 在写入时将 .mov 流式传输到浏览器

c++ - 如何找到字符串中每个后缀的出现次数?

javascript - 在 Javascript 中对图像进行哈希处理

c - 发生冲突后在哈希表中实现链接时出现段错误