gpt4 book ai didi

ruby - 如何通过优先非零值来合并哈希数组

转载 作者:数据小太阳 更新时间:2023-10-29 07:39:06 24 4
gpt4 key购买 nike

我想通过优先考虑非零值来合并哈希数组。

我是这样写的:

hs = [{a: 1, b:2, c: nil},{a: nil, b:nil, c:3},{d: nil, e: 5}]
hs.reduce{|v1,v2| v1.merge(v2){|k,old,new| old || new} }
# => {:a=>1, :b=>2, :c=>3, :d=>nil, :e=>5}

有没有更好的方法来实现这个功能?

最佳答案

不,可能不是。另一种选择是

hs = [{ a: 1, b: 2, c: nil }, { a: nil, b: nil, c: 3 }, { d: nil, e: 5 }]
hs.map(&:to_a)
.flatten(1)
.partition { |_, v| !v }
.flatten(1)
.to_h
# => { :c => 3, :a => 1, :b => 2, :d => nil, :e => 5 }

关于ruby - 如何通过优先非零值来合并哈希数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32372934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com