检查数组是否在另一个数组中有任何元素

时间:2017-04-12 12:34:03

标签: ruby literals

我有两个数组:

one = ["2cndb", "7bndb", "14accdb", "5ggdb"]
two = [["2cndb", "alive"], ["14accdb", "alive"], ["5ggdb", "not alive"]]

我想检查two中的每个子数组是否包含one的任何元素。如果是这样,我想在子数组中添加元素"yes",否则为"no"

我的代码是:

two.each do |item|
if (one.include?('item[0]'))
        item.push("yes")
    else
        item.push("no")
    end
end

我得到了

two = [["2cndb", "alive", "no"], ["14accdb", "alive", "no"], ["5ggdb", "not alive", "no"]]

"2cndb"中存在"14accdb""5ggdb"one。你能说出问题出在哪里吗?

1 个答案:

答案 0 :(得分:2)

您应该只使用item[0]不带引号。但是你说要检查子阵列中的所有值:在这种情况下,你的解决方案仍然是错误的,所以可能的解决方案是:

one = ["2cndb", "7bndb", "14accdb", "5ggdb"]
two = [["2cndb", "alive"], ["14accdb", "alive"], 
       ["5ggdb", "not alive"], ["foo", "bar"]]
two.map { |e| e + [(one & e).empty? ? 'no'  : 'yes']}
#=> [["2cndb", "alive", "yes"], ["14accdb", "alive", "yes"],
#    ["5ggdb", "not alive", "yes"], ["foo", "bar", "no"]]