繁体   English   中英

通过函数调用更改哈希键

[英]change hash key through function call

我有一个哈希,其中的键是country_id,我想更改country_id键以实际具有国家/地区的名称。 我有一个函数可以执行id到名称的转换,但是我不知道如何更新键并将其正确映射到它们的当前值。

另外,由于我使用的ruby \\ rails的版本,我无法使用transform_keys

我不知道将选择哪个国家/地区,因此我需要一种遍历键并更新它们,然后存储回散列或具有正确映射值的新散列的方法。

我拥有的哈希称为@trending_countries ,密钥当前是需要更新的country_id,其值包含该特定国家/地区的计数。

@trending_countries = {22=>2, 34=>3} ,我希望使用@trending_countries = {United States=>2, Canada=>3}的格式

我尝试在控制器中执行以下操作

@trending_countries.each {|k, v| @trending_countries[k] = Country.get_country_name(k)}

执行id到名称转换的函数在一个名为Country的单独模型中。

  # returns the country name when a country id is given.
  def self.get_country_name(country_id)
    country = self.find_by(id: country_id)
    return country.name
  end

一种实现方法如下:

old_hash.map { |key, value| [Country.get_country_name(key), value] }.to_h
old_hash = { 62=>:wee, 12=>:big, 8=>:medium }
country_id_to_name = { 62=>"Monaco", 8=>"France", 12=>"China" }

old_hash.each_with_object({}) { |(k,v),h| h[country_id_to_name[k]] = v }
  #=> {"Monaco"=>:wee, "China"=>:big, "France"=>:medium}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM