Вывести конкретные значения из объекта на основе сравнения - PullRequest
0 голосов
/ 08 сентября 2018

Я работаю над созданием пользовательского интерфейса, в котором мне нужно извлечь определенные значения из объекта на основе условий. Объект выглядит как ниже.

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, shoes, watch, поскольку у них есть компонент catWhitelist: [].

Я пытался использовать синтаксис карты и массива, но он не работал.

PS. Я довольно новичок в Ruby и учусь через онлайн-документы.

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Предполагая, что категория является массивом массивов (что не совсем понятно из вашего вопроса), попробуйте отобразить первый элемент вложенного массива, если вложенный массив включает "{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] }
0 голосов
/ 08 сентября 2018

Если мы предположим, что у вас есть этот массив:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...