gpt4 book ai didi

ruby-on-rails - Hash.delete_if 返回删除的元素?

转载 作者:太空宇宙 更新时间:2023-11-03 17:36:57 26 4
gpt4 key购买 nike

从哈希 relations 我想删除一些条目并将我删除的条目保留在另一个哈希 obj 中。

我找到了 Hash.delete_if 并做了:

obj = relations.delete_if{|k,v| v[:value] == 1}

但是,它不会返回已移除的那些,而是返回移除的那些。

有没有办法做到这一点?

最佳答案

您可以使用 partition method :

{x: 1, y: 0, z: 2, t: 1}.partition {|k, v| v == 1}
# => [[[:x, 1], [:t, 1]], [[:y, 0], [:z, 2]]]

然后您必须将结果转回哈希,为此您可以使用 Hash[] method :

{x: 1, y: 0, z: 2, t: 1}.partition{|k, v| v == 1}.map{|h| Hash[h]}
# => [{:x => 1, :t => 1}, {:y => 0, :z => 2}]

所以按照你的要求去做:

obj, relations = relations.partition{|k, v| v[:value] == 1}.map{|h| Hash[h]}

关于ruby-on-rails - Hash.delete_if 返回删除的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13862136/

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