我有一个哈希数组如下:
"data":[
{
"Id":"1",
"Name":"John"
},
{
"Id":"2",
"Name":"Robert"
},
{
"Id":"3",
"Name":"Steve"
},
{
"Name":"Tom",
"Country":"USA"
}
]
我想:
1.将所有关键点名称重命名为First_Name。
1.然后是从Tom到Thomas的任何First_Name值。
比如:
"data":[
{
"Id":"1",
"First_Name":"John"
},
{
"Id":"2",
"First_Name":"Robert"
},
{
"Id":"3",
"First_Name":"Steve"
},
{
"First_Name":"Thomas",
"Country":"USA"
}
]
我收集了一些
data.map{|h| {"First_Name"=>h['Name']} }
data.map{|h| h['First_Name'] = "Thomas" if h['First_Name'] == "Tom" }
最有效的方法是什么?
2条答案
按热度按时间disho6za1#
如果您使用的是Ruby 3.0+,您可以执行以下操作:
如果您使用的是3.0以下的Ruby版本,则可以:
xriantvc2#
我认为就地编辑数据的更好方法是:
当你调用
hash.delete
的时候,它会返回它正在删除的键/值对的值,所以你可以使用=赋值语句在一个新的键/值对中获取这个值。为了提高效率,只需将其合并到一个循环中: