【发布时间】:2020-02-04 11:15:48
【问题描述】:
我得到了哪个哈希和哈希数组的响应:
"id"=>67547,
"description"=>"project",
"actors"=>
[
{"id"=>123,
"displayName"=>"John Doe",
"type"=>"atlassian-user-role-actor",
"name"=>"john.doe",
"actorUser"=>{"accountId"=>"some_id"}},
{"id"=>456,
"displayName"=>"Chris Sth",
"type"=>"atlassian-user-role-actor",
"name"=>"chris.sth",
"actorUser"=>{"accountId"=>"some_id"}},
{"id"=>789,
"displayName"=>"Testing Name",
"type"=>"atlassian-user-role-actor",
"name"=>"testing.name",
"actorUser"=>{"accountId"=>"some_id"}},
]
我需要提取每个hash['actors'] 的名称并将其转换为电子邮件地址。问题是我需要跳过定义为 EXCLUDED_NAMES
EXCLUDED_NAMES = %w[
chris.sth
removed1258986304
john.doe
other.names
].freeze
private_constant :DEFAULT_EXCLUDED_NAMES
我正在尝试类似下面的内容,但仍然得到所有名称:
def setup_email
dev_role['actors'].map do |user|
if user.include?(EXCLUDED_NAMES)
user.delete
else
"#{user['name']}@example.com"
end
end
end
【问题讨论】:
-
所有答案(@3limin4t0r 答案的一部分除外)都包含
EXCLUDED_NAMES.include?(user["name"])。如果EXCLUDED_NAMES.include?(user["name"])很大,您可以通过使用集合来加快速度,该集合的查找时间很快,与哈希中的键查找相当:require 'set'; ex = EXCLUDED_NAMES.to_set,然后将代码中的EXCLUDED_NAMES替换为ex。跨度>