我有一系列哈希:
[{: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] 举报,一经查实,本站将立刻删除。