首页 > 解决方案 > Ruby 从除最后一个以外的所有哈希元素中删除哈希值

问题描述

我有一个哈希:

hash = [{:net_amount=>100.0, :transaction_date=>Sun, 20 Sep 2020, :vat=>0.0},
       {:net_amount=>100.0, :transaction_date=>Tue, 20 Oct 2020, :vat=>0.0},
       {:net_amount=>100.0, :transaction_date=>Fri, 20 Nov 2020, :vat=>0.0},
       {:net_amount=>100.0, :transaction_date=>Sun, 20 Dec 2020, :vat=>0.0}]

我想替换除最后一个之外的任何地方的值,如下所示transaction_datenil

hash = [{:net_amount=>100.0, :transaction_date=>nil, :vat=>0.0},
       {:net_amount=>100.0, :transaction_date=>nil, :vat=>0.0},
       {:net_amount=>100.0, :transaction_date=>nil, :vat=>0.0},
       {:net_amount=>100.0, :transaction_date=>Sun, 20 Dec 2020, :vat=>0.0}]

有没有任何漂亮的方法可以在不遍历哈希的情况下这样做each

标签: ruby

解决方案


简单的方法是只擦洗除一个以外的所有内容:

hash.reverse.drop(1).each do |e|
  e[:transaction_date] = nil
end

由于这些是数组中的对象引用,您可以像这样操作它们。


推荐阅读