Asy*_*raf 0 ruby arrays inventory-management ruby-hash
我想退回任何便宜的商品,这应该退回所有价格低于 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: 101.00, name: "Nike Air Force 1 Low"}},
# {price: 232.00, name: "Jordan 4 Retro"},
# {price: 230.99, name: "adidas Yeezy Boost 350 V2"},
# ]
Can you guide me ?
Run Code Online (Sandbox Code Playgroud)
您要找的是Enumerable#select.
class ShoesInventory
def initialize(items)
@items = items
end
def cheap
@items.select { |item| item[:price] < 30 }
end
end
Run Code Online (Sandbox Code Playgroud)
如果您希望能够链接方法,您可能还想返回一个新的清单实例:
def cheap
self.class.new(@items.select { |item| item[:price] < 30 })
end
Run Code Online (Sandbox Code Playgroud)