2017-04-12 95 views
0

任何元素我有两个数组:检查数组在另一个数组

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]'不带引号。 – Ilya

+0

''item [0]''不是'item [0]'。 – sawa

回答

1

您应该只使用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"]] 
+0

@Stefan,当然,编辑。 – Ilya

相关问题