在Ruby中,我有以下哈希值的数组:红宝石阵列,比较2个键和总结其他键/值
[
{:qty => 1, :unit => 'oz', :type => 'mass'},
{:qty => 5, :unit => 'oz', :type => 'vol'},
{:qty => 4, :unit => 'oz', :type => 'mass'},
{:qty => 1, :unit => 'lbs', :type => 'mass'}
]
我需要能够做的是比较由:unit
的元素和:type
,然后在它们相同时总计:qty
。将所得的阵列应该像如下:
[
{:qty => 5, :unit => 'oz', :type => 'mass'},
{:qty => 5, :unit => 'oz', :type => 'vol'},
{:qty => 1, :unit => 'lbs', :type => 'mass'}
]
如果阵列具有多个散列,其中:qty
是nil
和:unit
为空(""
),那么这将只返回其中的一个。因此,要延长上面的例子,这样的:
[
{:qty => 1, :unit => 'oz', :type => 'mass'},
{:qty => nil, :unit => '', :type => 'Foo'},
{:qty => 5, :unit => 'oz', :type => 'vol'},
{:qty => 4, :unit => 'oz', :type => 'mass'},
{:qty => 1, :unit => 'lbs', :type => 'mass'},
{:qty => nil, :unit => '', :type => 'Foo'}
]
会变成这样:
[
{:qty => 5, :unit => 'oz', :type => 'mass'},
{:qty => nil, :unit => '', :type => 'Foo'},
{:qty => 5, :unit => 'oz', :type => 'vol'},
{:qty => 1, :unit => 'lbs', :type => 'mass'}
]
编辑:对不起,在第二个例子中犯了一个错误......它不应该有邻。
你打算怎么给加分? – sawa
你的第二个例子没有意义,为什么在结果中没有单位“o”的散列? –
你说得对,只是编辑它。 –