我有两个数组:
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
。你能说出问题出在哪里吗?
答案 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"]]