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连接两个数组的相应元素,你将拥有按摩哈希所需的一切.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐