如何在Ruby中将ID数组转换为带键的哈希数组?

h22fl7wq  于 2022-09-21  发布在  Ruby
关注(0)|答案(2)|浏览(202)

我有一个数组,

array = [1,2,3]

需要将其转变为:

newArray = [{id: 1}, {id: 2}, {id: 3}]

我知道,有什么有效的方法吗?

array.each { |id| newArray << { id: id } }
2vuwiymt

2vuwiymt1#

像这样的吗?

array.map { |id| Hash[:id, id] }

散列文字也是如此

array.map { |id| { id: id } }
x6yk4ghg

x6yk4ghg2#

一种非常优雅的方式:

  • 转换为字符串
  • 构建JSON样式对象
  • 转换为数组(在字符串内)
  • 让JSON解析它,以获得更多(线程)安全性
  • 将键符号化,因为在Ruby中首选使用键而不是字符串

此外,您可以使用Base58随机密钥并对其进行两次散列,以减少计时攻击

JSON.parse([1,2,3].map(&:to_s).collect{  "{"id": "#{_1}"}" }.join(",").prepend("[").concat("]")).collect(&:symbolize_keys)
=> [{:id=>"1"}, {:id=>"2"}, {:id=>"3"}]

相关问题