嗨,我有两个哈希数组,如下所示
A = [{"name" => "rihan"}, {"name" => "gihan"}, {"name" => "mihan"}]
B = [{"value" => "true"}, {"value" => "true"}, {"value" => "true"}]
如何将它们合并到单个哈希数组中作为〔{“name”=
因为我需要根据哈希转换的管道分隔cucumber表来验证它们,例如|name|value|rihan|true||gihan|true|
对于cucumber表,我使用以下函数将其转换为哈希
def create_hash_from_data_table table
table.hashes.each do |hash| ; @table_hash = hash ; end
return @table_hash
end
对于实际的 JSON 响应,我正在使用递归函数将其提取到两个哈希数组 [A] 和 [B] 上方,但我不确定如何合并它们以与cucumber数据进行比较,而不会覆盖或更改 A[] 和 B[] 中的重复值。
我尝试了合并和递归合并选项,例如array1=array2.merge(array1)
请提供帮助,因为合并方法抛出未定义的方法错误
其他选项,按索引对每个数组中的元素进行配对:
a.map.with_index { |h, i| h.merge(b[i]) }
a #=> [{"name"=>"rihan", :value=>"true"}, {"name"=>"gihan", :value=>"true"}, {"name"=>"mihan", :value=>"true"}]
你的问题仍然很令人困惑。我假设你有这个输入:
a = [{"name" => "rihan"}, {"name" => "gihan"}, {"name" => "mihan"}]
b = [{"value" => 1}, {"value" => 2}, {"value" => 3}]
您希望得到这样的结果:
[{"name"=>"rihan", "value"=>1},
{"name"=>"gihan", "value"=>2},
{"name"=>"mihan", "value"=>3}]
这可以通过以下方式实现:
a.zip(b).map { |ar| ar.inject(:merge) }
或者在这种特定情况下(压缩后的数组总是2元素的):
a.zip(b).map { |x,y| x.merge(y) }
如同
a.zip(b) #=> [[{"name"=>"rihan"}, {"value"=>1}], [{"name"=>"gihan"}, {"value"=>2}], [{"name"=>"mihan"}, {"value"=>3}]]
然后通过合并数组的所有元素来映射数组的每个元素。
或者更明确的版本,带有一个简单的循环:
a.size.times.with_object([]) do |i, output|
output << a[i].merge(b[i])
end
我有两个哈希要合并。它们看起来像这样: 第二个散列看起来像: 我想合并这两个散列数组,结果如下所示: 有没有一种简单的方法来合并这两个哈希,或者我必须逐个遍历哈希并在另一个哈希中找到该键?
寻找一种优雅的方式以特殊的方式合并两个散列数组: 如果名称关键字匹配,则结果必须包含< code>new_data的所有名称散列,仅包含< code>old_data的额外数据。 我的第一次尝试是这样的,但是它创建了一个额外的散列:
我有两个哈希数组: 我想在< code>a2中找到其< code>ID和< code>name字段与< code>a1中条目的< code>ID和< code>name字段相匹配的散列(不考虑< code>email或任何其他进入< code>a2的项目),然后将< code>ORDER_NO的值合并到< code>a1散列中也就是说,以下列方式结束: 我也想忽略 a2 中存在的元素,但不忽略 a
我有 2 个数组: 我希望array1元素成为新Hash中的键,array2元素成为同一个Hash中相应的值。有人能建议一下怎么做吗? 谢谢
问题内容: 我可以使用通用的特定于Javascript / Coffeescript的习惯用法吗?主要出于好奇。 我有两个数组,一个数组由所需的键组成,另一个数组由所需的值组成,我想将其合并到一个对象中。 问题答案: var r = {}, i, keys = [‘one’, ‘two’, ‘three’], values = [‘a’, ‘b’, ‘c’];
所以,我有一个带有数组的哈希,就像这样: 我想将它们合并到一个哈希数组中,组合相应的元素。 结果应该是这样的: 知道如何有效地做到这一点吗? 请注意,真实世界的使用场景可能包含数量可变的散列键。