-
Notifications
You must be signed in to change notification settings - Fork 0
/
how_to_transform_dictionary.rb
44 lines (40 loc) · 1.04 KB
/
how_to_transform_dictionary.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# How to transform a hash/dictionary/map
# @param {Hash} hash
# @return {Array}
def transform(hash)
hash.reduce([]) { |res, (k,v)| res << {'name' => k.to_s}.merge(v) }
end
puts "transform a hash/dictionary/map"
pp transform({'first_name' => {'required' => true, 'enabled' => false},
'last_name' => {'required' => true, 'enabled' => false}})
# Output: [
# {
# 'name' => 'first_name',
# 'required' => true,
# 'enamble' => false
# },{
# 'name' => 'last_name',
# 'required' => true,
# 'enamble' => false
# }
# ]
# How to shorten a hash/dictionary/map
# @param {Array} arr
# @return {Hash}
def shorten(arr)
arr.reduce({}) { |res, hash| res.merge({hash.delete('name') => hash}) if hash.key?('name') }
end
puts "shorten a hash/dictionary/map"
pp shorten([
{
'name' => 'first_name',
'required' => true,
'enamble' => false
},{
'name' => 'last_name',
'required' => true,
'enamble' => false
}
])
# Output: {'first_name' => {'required' => true, 'enabled' => false},
# 'last_name' => {'required' => true, 'enabled' => false}}