将多个数组合并为一个哈希数组



我有一个类似的散列

name = ['Jhon Doe', 'Jane Doe' , 'David']
role = ['Admin', 'Accountant', 'Sales']

我想让它看起来像这个

data = [
{name => 'Jhon Doe', role => 'Admin'},
{name => 'Jane Doe', role => 'Accountan'},
{name => 'David', role => 'Sales'}
]

能做这样的事吗?

这里有一个相当简单的解决方案:

name.zip(role).map {|name, role| { name:, role: }}
#=> [
#     { name: 'Jhon Doe', role: 'Admin' },
#     { name: 'Jane Doe', role: 'Accountant' },
#     { name: 'David',    role: 'Sales' }
#   ]

使用mapwith_index:可以获得所需的结果

name.map.with_index { |name_i, index| { name: name_i, role: role[index] } }

此处的名称和角色应该是array,而不是hash

name = ['Jhon Doe', 'Jane Doe' , 'David']
role = ['Admin', 'Accountant', 'Sales']

您可以使用以下内容生成输出哈希

my_hash_array = []
name.size.times{|i| my_hash_array << {name: name[i], role: role[i]} }

我希望这对你有帮助。

最新更新