繁体   English   中英

返回与另一个数组中的元素匹配的数组的第一个值

[英]Return first value of an array that matches an element from a different array

我想比较两个数组,并返回与数组2中的一项匹配的数组1的第一个值。 这是我到目前为止的内容:

def find_the_color(array_1)
  array_2 = ["red", "yellow", "blue"]
  sample.find do |x|
    x=="red"||x=="yellow"||x=="blue"
  end
end

我想使用数组而不是将其分成3个条件语句来执行此操作。 有办法吗?

只需这样做

 array_1.find { |x| array_2.include?(x) }
array_1 = [ 'green', 'yellow' ]
array_2 = ["red", "yellow", "blue"]
( array_1 & array_2 ).first

如果性能很重要,请首先将array_2转换为Set

array_1 = %w{ green yellow orange purple mauve black blue }
array_2 = %w{ pink red mauve white brown }

require 'set'

set_2 = array_2.to_set
array_1.find { |e| set_2.include? e }
  #=> "mauve"

通过在开始时将array_2转换为集合, set_2.include? e set_2.include? e可以快速执行(类似于查找哈希键的值)。 相比之下,使用Array#include? ,必须为array_1每个元素枚举array_2 ,直到找到匹配项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM