首页 > 解决方案 > 如何从ruby中的哈希数组更改哈希键?

问题描述

鉴于:

data = [
  {"votable_id"=>1150, "user_ids"=>"1,2,3,4,5,6,"},
  {"votable_id"=>1151, "user_ids"=>"55,66,34,23,56,7,8"}
]

这是预期的结果。数组应该有前 5 个元素。

data = [
  {"votable_id"=>1150, "user_ids"=>["1","2","3","4","5"]},
  {"votable_id"=>1151, "user_ids"=>["55","66","34","23","56","7",8"]}
]

这是我尝试过的:

data.map{|x| x['user_ids'] = x['user_ids'].split(',').first(5)}

还有其他优化的解决方案吗?

标签: ruby-on-railsarraysrubyhash

解决方案


你也可以使用.map.tap喜欢这个

data.map do |h|
 h.tap { |m_h| m_h["user_ids"]= m_h["user_ids"].split(',').first(5)}
end

推荐阅读