ruby – 如何将数组值与散列数组合?

前端之家收集整理的这篇文章主要介绍了ruby – 如何将数组值与散列数组合?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一系列哈希:

[{:foo => 1,:bar => 2},{:foo => 2,:bar => 4} ...]

和一个整数数组:

[3,6]

我希望将整数数组和散列中的值组合起来,结果如下:

[{:foo => 1,:bar => 2,:baz => 3},:bar => 4,:baz => 6}]

我目前正在这样做:

myArrayOfHashes.each_with_index |myHash,index|
    myHash[:baz] = myArrayOfIntegers[index]
end

这是正确的方法吗?

我想象一个更实用的方法,我同时迭代两个数组,就像使用zip map的东西.

解决方法

尝试:

require 'pp'

ary_of_hashes = [{:foo => 1,:bar => 4}]
[3,6].zip(ary_of_hashes).each do |i,h|
  h[:baz] = i
end

pp ary_of_hashes

结果如下:

[{:foo=>1,:bar=>2,:baz=>3},{:foo=>2,:bar=>4,:baz=>6}]

zip是一个很好的工具,但是地图不会真的买得太多,至少在这种情况下你不能轻易做到.

另外,不要使用像myArrayOfHashes这样的CamelCase来命名变量,而是使用snake_case,比如ary_of_hashes.我们使用CamelCase作为类名.从技术上讲,我们可以使用混合大小写的变量,但按照惯例,我们不会这样做.

并且,可以使用each_with_index,但它会导致代码笨拙,因为它会强制您使用索引[3,6].让zip连接两个数组的相应元素,你将拥有按摩哈希所需的一切.

猜你在找的Ruby相关文章