我有三个数组。如何基于第三个数组的顺序合并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