gpt4 book ai didi

ruby - 按键数组中的顺序对 Ruby 哈希进行排序

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

我有一个散列:

sample = { bar: 200, foo: 100, baz: 100 }

如何使用 sort_order 中的键顺序对 sample 进行排序:

sort_order = [:foo, :bar, :baz, :qux, :quux]

预期结果:

sample #=> { foo: 100, bar: 200, baz: 100 }

我能想到的就是

new_hash = {}
sort_order.each{|k| new_hash[k] = sample[k] unless sample[k].nil? }
sample = new_hash

必须有更好的方法。提示?

不应该出现没有值的键,即键的数量保持不变,Sort Hash Keys based on order of same keys in array 不是这种情况。

最佳答案

使用键交集的函数式方法:

new_sample = (sort_order & sample.keys).map { |k| [k, sample[k]] }.to_h
#=> {:foo=>100, :bar=>200, :baz=>100}

正如@Stefan 指出的那样,抽象 Hash#slice来自 ActiveSupport 的几乎可以完成这项工作:

require 'active_support/core_ext/hash'
new_sample = sample.slice(*sort_order)
#=> {:foo=>100, :bar=>200, :baz=>100}

关于ruby - 按键数组中的顺序对 Ruby 哈希进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37405391/

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