如何遍历两个哈希同时红宝石

时间:2015-05-22 08:46:31

标签: ruby hash

我有两个哈希,我想遍历它们。我怎样才能同时遍历它们。

xsi:schemaLocation

这就是我现在正在做的事情。是否有其他惯用或更好的方式

1 个答案:

答案 0 :(得分:2)

我不认为你是怎么做的。如果你想要一种更灵活的方式,你可以使用其关键数组的笛卡尔积并迭代它......

all_key_combos.map { |k1,k2| [hash1[k1], hash2[k2]] }
 => [[["value1", "value11"], ["value3", "value32"]], [["value1", "value11"], ["value4", "value42"]], [["value2", "value21"], ["value3", "value32"]], [["value2", "value21"], ["value4", "value42"]]] 

要从中获取值,一个简单的地图会构建一个数组,不知道你想要什么输出,让事情变得困难,但也许这会指向你正确的方向?

all_key_combos.map { |k1,k2| hash1[k1].product(hash2[k2]) }
 => [[["value1", "value3"], ["value1", "value32"], ["value11", "value3"], ["value11", "value32"]], [["value1", "value4"], ["value1", "value42"], ["value11", "value4"], ["value11", "value42"]], [["value2", "value3"], ["value2", "value32"], ["value21", "value3"], ["value21", "value32"]], [["value2", "value4"], ["value2", "value42"], ["value21", "value4"], ["value21", "value42"]]] 

如果您想要获得他们的产品 -

{{1}}

可能性无穷无尽:)