ruby - 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_date
:nil
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
?
解决方案
简单的方法是只擦洗除一个以外的所有内容:
hash.reverse.drop(1).each do |e|
e[:transaction_date] = nil
end
由于这些是数组中的对象引用,您可以像这样操作它们。
推荐阅读
- c# - 为什么我的http请求从2017年切换到vs 2019后没有body?
- html - 如何制作具有定义宽度的代码块?
- javascript - Firebase 提供失败的前提条件错误
- html - 响应式设计 - 调整窗口大小时 Div 消失
- android - 如何在使用菜单项选择的选项项上附加片段
- arrays - 如何返回指示Ruby中数组的最大到最小整数位置的索引
- python - Tensorflow Batchnormalization - TypeError:轴必须是 int 或 list,类型给定:
- sql - 错误“将 varchar 值 'ABC' 转换为数据类型 int 时转换失败。”
- java - 按频率对文本文件中的单词进行排序
- xslt - 如何使用 XSLT 遍历字母表?