标签: ruby-hash

退回 Ruby Hash 中价格低于 300 美元的任何物品

我想退回任何便宜的商品,这应该退回所有价格低于 300 美元的商品。

这是主类;

class ShoesInventory
  def initialize(items)
    @items = items
  end

  def cheap
    # this is my solution, but it just print out an array of boolean
    @items.map { |item| item[:price] < 30 }

    # to be implemented
  end
end
Run Code Online (Sandbox Code Playgroud)

这是该类的一个实例;

ShoesInventory.new([
  {price: 101.00, name: "Nike Air Force 1 Low"}},
  {price: 232.00, name: "Jordan 4 Retro"},
  {price: 230.99, name: "adidas Yeezy Boost 350 V2"},
  {price: 728.00, name: "Nike Dunk Low"}
]).cheap
Run Code Online (Sandbox Code Playgroud)

我希望结果是这样的;

# => [
#      {price: …
Run Code Online (Sandbox Code Playgroud)

ruby arrays inventory-management ruby-hash

0
推荐指数
1
解决办法
66
查看次数

RSpec 的 contains_exactly 的哈希值是多少?

我需要验证哈希的内容,我惊讶地发现 RSpeccontain_exactly只适用于数组。理想的期望是:

expect(type.values.values).to contain_exactly(
  ONE: an_object_having_attributes(value: 'uno'),
  TWO: an_object_having_attributes(value: 'dos')
)
Run Code Online (Sandbox Code Playgroud)

基本要求是contain_exactly要求数组包含这些元素,并且哈希等效项必须仅包含指定的确切键/值对。

有很多解决方法都可以

  • include(key: value),但这允许其他键,我需要完全匹配。
  • expect(hash.keys).to contain_exactly(...)但这并不能验证键是否专门链接到值。
  • 无论如何使用contain_exactly(将哈希读取为元组[key, value])并基于子数组进行匹配,例如contain_exactly(a_collection_containing_exactly('ONE', an_object_having_attributes(value: 'uno')), ...)
  • 迭代哈希并根据预期输入将键与值进行匹配aggregate_failures

等等,但我最好奇是否有内置的 RSpec 方法可以做到这一点。

ruby testing rspec ruby-hash

0
推荐指数
1
解决办法
2505
查看次数

有人可以解释一下Hash#dig与Hash#fetch有什么区别

我正在尝试获取哈希值中的嵌套值。我已经尝试过使用Hash#fetchHash#dig但是我不知道如何将它们组合在一起。

我的哈希如下。

response = {
   "results":[
      {
         "type":"product_group",
         "value":{
            "destination":"Rome"
         }
      },
      {
         "type":"product_group",
         "value":{
            "destination":"Paris"
         }
      },
      {
         "type":"product_group",
         "value":{
            "destination":"Madrid"
         }
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下

response.dig(:results)[0].dig(:value).dig(:destination) #=> nil
response.dig(:results)[0].dig(:value).fetch('destination') #=> Rome
Run Code Online (Sandbox Code Playgroud)

期望的返回值为"Rome"。第二个表达式有效,但我想知道是否可以简化。

我正在使用Ruby v2.5和Rails v5.2.1.1。

ruby ruby-on-rails ruby-hash

-1
推荐指数
1
解决办法
894
查看次数

哈希数组中的百分比?

我有hash一个哈希数组array

hash = {"BEGIN"=>5, "END"=>10}


array = [
    {:name=>"aaa", :phase=>"END", :quantity=>6},
    {:name=>"bbb", :phase=>"END", :quantity=>4},
    {:name=>"ccc", :phase=>"BEGIN", :quantity=>5}
  ]
Run Code Online (Sandbox Code Playgroud)

如何计算从哈希中获取值的哈希数组的百分比并获得此结果?

[
  {:name=>"aaa", :phase=>"END", :quantity=>60%},
  {:name=>"bbb", :phase=>"END", :quantity=>40%},
  {:name=>"ccc", :phase=>"BEGIN", :quantity=>100%}
]
Run Code Online (Sandbox Code Playgroud)

先感谢您!

ruby arrays percentage ruby-hash

-1
推荐指数
1
解决办法
95
查看次数

我想在ruby中将哈希数组转换为具有特定格式的单个哈希

我有一个hashhash1

hash1 = [{key: 'key1', value: 'value1'}, {key: 'key2', value: 'value2'}, {key: 'key3', value: 'value3'}]
Run Code Online (Sandbox Code Playgroud)

并希望转换为以下格式

{'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'}
Run Code Online (Sandbox Code Playgroud)

ruby ruby-hash

-2
推荐指数
1
解决办法
51
查看次数