我有三個數組。如何基於第三個數組的順序合併Ruby中兩個數組的項目?
我的主列表包含在數據庫驗證不同實體的組合:
ab = ["a:555", "b:222", "a:333", "b:777", "a:777", "a:999", "b:111"]
我有a
兩個陣列和分離b
的實體,而是有序的(有些是丟失):
# notice that some of the items from the initial list are missing, but the order is preserved!
a = [{id}, "a:777", "a:999"]
b = ["b:222", "b:111"]
什麼是合併a
和b
的有效方法c
保留ab
中存在項目的順序?我的程序的預期結果是:
c = ["a:555", "b:222", "a:777", "a:999", "b:111"]
我是一個紅寶石新手,我想出的一切都是完全醜陋的。
編輯:
我知道它很重要,並會混淆,但a
和b
是複雜的對象(AR)表示在ab
的字符串。爲了我的代碼澄清:
ab = ["a:555", "b:222", "a:333", "b:777", "a:777", "a:999", "b:111"]
a = [{:id => 555}, {:id => 777}, {:id => 999}]
b = [{:id => 222}, {:id => 111}]
c = []
ab.each { |item|
parts = item.split(":")
if parts[0] == "a"
if a[0][:id].to_s() == parts[1]
c << a.shift()
end
else
if b[0][:id].to_s() == parts[1]
c << b.shift()
end
end
}
puts c
對不起,我沒有抓住它。你想到了什麼? – oldergod 2013-05-09 09:03:29
是的,問題很混亂。 – 2013-05-09 09:06:09
將在一分鐘內添加我的代碼。 – ddinchev 2013-05-09 09:07:44