首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.include检查数组中的多个项?-- Ruby Beginner

使用.include检查数组中的多个项?-- Ruby Beginner
EN

Stack Overflow用户
提问于 2011-11-06 17:59:59
回答 2查看 45.7K关注 0票数 57

有没有更好的方式来写这个:

代码语言:javascript
复制
if myarray.include? 'val1' ||
   myarray.include? 'val2' ||
   myarray.include? 'val3' ||
   myarray.include? 'val4'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-06 18:10:24

使用设置交点(Array#:&):

代码语言:javascript
复制
(myarray & ["val1", "val2", "val3", "val4"]).present?

您还可以循环(any?将在第一次出现时停止):

代码语言:javascript
复制
myarray.any? { |x| ["val1", "val2", "val3", "val4"].include?(x) }

这对于小数组来说是可以的,在一般情况下,你最好有O(1)个谓词:

代码语言:javascript
复制
values = ["val1", "val2", "val3", "val4"].to_set
myarray.any? { |x| values.include?(x) }

在Ruby >= 2.1中,使用Set#intersect

代码语言:javascript
复制
myarray.to_set.intersect?(values.to_set)
票数 108
EN

Stack Overflow用户

发布于 2018-08-27 21:09:12

创建您自己的可重用方法:

代码语言:javascript
复制
class String
  def include_any?(array)
    array.any? {|i| self.include? i}
  end
end

用法

代码语言:javascript
复制
"a string with many words".include_any?(["a", "string"])
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8026300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档