根据比较从对象打印特定值

时间:2018-09-08 07:55:25

标签: ruby

我正在开发UI,其中我需要根据条件从对象中检索特定值。对象如下所示。

Category = {["personal_care_appliances", "glwise_category_config", "{catWhitelist: []}"],
            ["wine","glwise_category_config","{}"],
            ["shoes","glwise_category_config","{catWhitelist: []}"],
            ["automotive","glwise_category_config",],
            ["watch","glwise_category_config","{catWhitelist: []}"]
]

我需要打印第一个元素,例如personal_care_appliances,鞋子,手表,因为它们具有组件catWhitelist:[]。

我尝试使用map和array语法,但是没有用。

PS。我是Ruby的新手,可以通过在线文档学习。

2 个答案:

答案 0 :(得分:1)

假设类别是一个数组数组(您的问题尚不清楚),如果嵌套数组包含"{catWhitelist: []}",请尝试映射嵌套数组的第一个元素:

category.map { |e| e[0] if e.include? "{catWhitelist: []}" }.compact

# => ["personal_care_appliances", "shoes", "watch"]

或者,最好在映射之前选择所需的子数组:

category.select { |e| e.include? "{catWhitelist: []}" }.map{ |e| e[0] }

答案 1 :(得分:0)

如果我们假设您具有以下数组:

category = [
  ["personal_care_appliances", "glwise_category_config", "{catWhitelist: []}"],
  ["wine","glwise_category_config","{}"],
  ["shoes","glwise_category_config","{catWhitelist: []}"],
  ["automotive","glwise_category_config",],
  ["watch","glwise_category_config","{catWhitelist: []}"]
]

,而您只想获取具有catWhitelist的商品,则可以使用以下方法:

def with_cat_whitelist(category)
  result = []
  category.each do |item|
    result << item.first if item.last == "{catWhitelist: []}"
  end
  result
end