我只想更新哈希中的日期元素。IE
hash = { 'name': 'Albert', 'date_1': "31-01-2017", 'date_2': "31-01-2017" }
## I only want to update `date_1` and `date_2`.
Run Code Online (Sandbox Code Playgroud)
我试过了
hash.select {|k,v| ['date_1','date_2'].include? k }.transform_values!(&:to_date)
Run Code Online (Sandbox Code Playgroud)
但是因为我之前做了一个选择,它只会返回我
{ 'date_1': Tue, 31 Jan 2017, 'date_2': Tue, 31 Jan 2017 }
有什么建议可以保留其他属性以及转换选定的键吗?
i.e. { 'name': 'Albert', 'date_1': Tue, 31 Jan 2017, 'date_2': Tue, 31 Jan 2017 }
只需更新 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']
Run Code Online (Sandbox Code Playgroud)
或者,each
如果您有更多日期键,则可以使用它:
date_keys = [:date_1, :date_2]
hash.each do |k,v|
hash[k] = v.to_date if date_keys.include?(k)
end
Run Code Online (Sandbox Code Playgroud)