Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何合并Ruby中哈希数组(键和内容)的内容_Ruby_Arrays_Hash - Fatal编程技术网

如何合并Ruby中哈希数组(键和内容)的内容

如何合并Ruby中哈希数组(键和内容)的内容,ruby,arrays,hash,Ruby,Arrays,Hash,我需要根据包含的每个数组的“值”合并内容,以便最终得到如下结果: myArray = [{"papers"=>[[1,2,3],[1,3,2]], "value"=>"1"}, {"papers"=>[[2,1,3],[2,3,1]], "value"=>"1"}, {"papers"=>[[1,2,3],[1,3,2]], "value"=>"0.5"}] 我怎么用Ruby的方式来做呢 我曾考虑迭代数组,并根据

我需要根据包含的每个数组的“值”合并内容,以便最终得到如下结果:

myArray = [{"papers"=>[[1,2,3],[1,3,2]], "value"=>"1"},
           {"papers"=>[[2,1,3],[2,3,1]], "value"=>"1"}, 
           {"papers"=>[[1,2,3],[1,3,2]], "value"=>"0.5"}]
我怎么用Ruby的方式来做呢


我曾考虑迭代数组,并根据值创建一个新数组,但我一直在绞尽脑汁,试图找出如何定义要复制的内容。

考虑创建一个类似“1”=>[…],“0.5”=>[…]的散列?如果数组中没有任何额外的属性,那么合并这两个属性就容易多了。是的,我可以这样做Edwin,你能告诉我这会有什么帮助吗?考虑创建一个像“1”=>[…],“0.5”=>[…]这样的散列吗?如果你在数组中没有任何额外的属性,那么合并这两个属性就容易多了。是的,我可以这样做Edwin,你能告诉我这会有什么帮助吗?谢谢你Martin-这很正确。谢谢你Martin-这很正确。
myArray = [{"papers"=>[[1,2,3],[1,3,2],[2,1,3],[2,3,1]], "value"=>"1"}, 
           {"papers"=>[[1,2,3],[1,3,2]], "value"=>"0.5"}]
>> myArray = [{"papers"=>[[1,2,3],[1,3,2]], "value"=>"1"},
?>            {"papers"=>[[2,1,3],[2,3,1]], "value"=>"1"}, 
?>            {"papers"=>[[1,2,3],[1,3,2]], "value"=>"0.5"}]

>> hash = Hash.new {|h,k| h[k] = []}

>> myArray.each {|entry| hash[entry['value']] += entry['papers']}

>> hash
=> {"1"=>[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1]], "0.5"=>[[1, 2, 3], [1, 3, 2]]}

>> hash.map {|k,v| {"value" => k, "papers" => v}}
=> [{"value"=>"1", "papers"=>[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1]]}, {"value"=>"0.5", "papers"=>[[1, 2, 3], [1, 3, 2]]}]