加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 04:06:10 所属栏目:百科 来源:网络整理
导读:我有一系列哈希: [{:foo = 1,:bar = 2},{:foo = 2,:bar = 4} ...] 和一个整数数组: [3,6] 我希望将整数数组和散列中的值组合起来,结果如下: [{:foo = 1,:bar = 2,:baz = 3},:bar = 4,:baz = 6}] 我目前正在这样做: myArrayOfHashes.each_with_index |myH
我有一系列哈希:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读