我想从散列中删除除给定键之外的所有键。
例如:
{
"firstName": "John",
"lastName": "Smith",
"age": 25,
"address":
{
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
},
"phoneNumber":
[
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}
我想删除除“firstName”和/或“address”之外的所有内容。
7条答案
按热度按时间oewdyzsn1#
Hash#slice
怎么样?自2.5起提供Ruby
bxjv4tth2#
一些其他选项:
或者你可以这样做:
所以你现在可以说:
ajsxfq5m3#
如果您使用Rails,请考虑ActiveSupport
except()
方法:http://apidock.com/rails/Hash/exceptgpnt7bae4#
Hash#select可以实现你想要的功能:
编辑(供评论):
假设h是上面的hash:
yhived7q5#
odopli946#
受Jake Dempsey的答案启发,这个算法对于大哈希值应该更快,因为它只对显式键进行峰值处理,而不是迭代整个哈希值:
yrefmtwq7#
没有Rails需要得到一个非常简洁的代码: