ruby - 更新哈希中的特定键

标签 ruby hash

我只想更新哈希中的日期元素。 即

hash = { 'name': 'Albert', 'date_1': "31-01-2017", 'date_2': "31-01-2017" }

## I only want to update `date_1` and `date_2`. 

我试过了

hash.select {|k,v| ['date_1','date_2'].include? k }.transform_values!(&:to_date)

但是因为我之前做了一个select,所以只会返回我

{ 'date_1':2017 年 1 月 31 日,星期二,'date_2':2017 年 1 月 31 日,星期二 }

关于保留其他属性以及转换所选键的任何建议?

即{ 'name': 'Albert', 'date_1':2017 年 1 月 31 日,星期二,'date_2':2017 年 1 月 31 日,星期二 }

最佳答案

只需更新 date_1 和 date_2 的值:

hash['date_1'] = hash['date_1'].to_date if hash['date_1']
hash['date_2'] = hash['date_2'].to_date if hash['date_2']

或者如果你有更多的日期键,你可以使用 each 来完成:

date_keys = [:date_1, :date_2]
hash.each do |k,v| 
  hash[k] = v.to_date if date_keys.include?(k)
end

关于ruby - 更新哈希中的特定键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41918833/

相关文章:

css - 让 Watir 等待所有第 3 方脚本加载完毕

ruby - Erb 与 ruby 中的 Sinatra

xml - PowerShell:带有 ConvertTo-XML 输出的自定义属性 XML 标签

arrays - 如何将哈希转换为具有特定顺序的数组? ( ruby )

ruby - 合并多个哈希数组并进行计算

ruby - 为什么我不能从 AWS 访问这个 url,但我可以从我的本地机器访问?

ruby-on-rails - 通过另一台机器请求

ruby-on-rails - 向现有 Rails 项目添加测试的最佳方式?

java - 使用 SHA 256 散列并使用 AES 加密

Ruby 哈希在默认值中使用键值