我已阅读了不少帖子,但似乎没有人这样做,这有点棘手.
假设我有一个包含数组作为其值之一的哈希.
hash = {
:a => 'one',
:arr => [
{:id => 'ten', :amount => 10, :b => 'two'},
{:id => 'twenty', :amount => 20, :b => 'two'},
{:id => 'apple', :amount => 7, :b => 'applesauce'}
],
:c => 3
}
Run Code Online (Sandbox Code Playgroud)
我想将其转换为哈希数组(其大小与包含的数组一样),如下所示:
# => [
{:a => 'one', :id => 'ten', :amount => 10, :b => 'two', :c => 3},
{:a => 'one', :id => 'twenty', :amount => 20, :b => 'two', :c => 3},
{:a => 'one', :id => 'apple', :amount => 7, :b => 'applesauce', :c => 3}
]
Run Code Online (Sandbox Code Playgroud)
转换应该维护数组内部和外部的任何键/值对,理想情况下,我可以传入数组的键以请求它执行操作:
flatten_hash_array(hash, :arr)
Run Code Online (Sandbox Code Playgroud)
我意识到flattenArray类中的Ruby 不是我们需要的.抓住动词!任何帮助,将不胜感激.
这应该可以完成工作,除非进行有效性检查.
def flatten_hash_array(hash, key)
hash[key].map {|entry| entry.merge(hash.reject {|k| k == key})}
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |