2017-04-12 139 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

相關問題