我尝试用另一个键替换哈希中的所有键,像这样:
{
name: 'Josh',
surname: 'Simon',
cars: [{
name: 'Diablo',
seats: [{ name: 'Josh', surname: 'Simon' }],
},
{
name: 'Raptor',
seats: [{ name: 'Josh', surname: 'Simon' }],
},
{
name: 'Testarossa',
seats: [{ name: 'Josh', surname: 'Simon' }],
}],
}
假设我想把汽车的钥匙改为人,这样我就可以实现这样的功能
{
name: 'Josh',
surname: 'Simon',
cars: [{
name: 'Diablo',
people: [{ name: 'Josh', surname: 'Simon' }],
},
{
name: 'Raptor',
people: [{ name: 'Josh', surname: 'Simon' }],
},
{
name: 'Testarossa',
people: [{ name: 'Josh', surname: 'Simon' }],
}],
}
这能以某种方式做到吗?
3条答案
按热度按时间lf3rwulv1#
您可以删除旧的键并将该值分配给新的键
envsm3lx2#
如果变量
hash
保存了示例中给出的哈希值,并且该对象将被改变,则可以编写以下内容。所以现在
请参见Hash#transform_keys!.
如果散列不被改变,你可以在一个深副本上操作。方法之一是使用Marshal::load和Marshal::dump:
请注意,如果我们通过写入来更改
h
,例如,我们可以验证
hash
没有改变。sg3maiej3#
你可以这样做: