1 a = [1, 2, 3] 2 Hash[*a.collect { |v| 3 [v, v*2] 4 }.flatten]
It's not as foolproof as his solution, however!
14096 users tagging and storing useful source code snippets
Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
1 a = [1, 2, 3] 2 Hash[*a.collect { |v| 3 [v, v*2] 4 }.flatten]
class Array
def to_h(&block)
Hash[*self.collect { |v|
[v, block.call(v)]
}.flatten]
end
end
1 class Array 2 def to_hash_keys(&block) 3 Hash[*self.collect { |v| 4 [v, block.call(v)] 5 }.flatten] 6 end 7 8 def to_hash_values(&block) 9 Hash[*self.collect { |v| 10 [block.call(v), v] 11 }.flatten] 12 end 13 end
1 >> a = ["able", "baker", "charlie"] 2 >> a.to_hash_values {|v| a.index(v)} 3 => {0=>"able", 1=>"baker", 2=>"charlie"}
1 2 >> id_list = (21..31).to_a 3 => [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31] 4 >> products_ids = [24, 29, 30, 32] 5 => [24, 29, 30, 32] 6 >> results = Hash[*id_list.collect {|v| [v, products_ids.include?(v)]}.flatten] 7 => {27=>false, 22=>false, 28=>false, 23=>false, 29=>true, 24=>true, 30=>true, 25=>false, 31=>false, 26=>false, 21=>false} 8 >> results.each_pair {|k,v| puts "Key: #{k} is true!" if v == true} 9 Key: 29 is true! 10 Key: 24 is true! 11 Key: 30 is true!
1 2 class << Hash 3 def create(keys, values) 4 self[*keys.zip(values).flatten] 5 end 6 end
1 2 >> Hash.create(['a', 'b', 'c'], [1, 2, 3]) 3 => {"a"=>1, "b"=>2, "c"=>3}
1 2 class Array 3 def flatten_once 4 returning([]) {|ary| each{|x| ary.concat x}} 5 end 6 end
1 2 class Array 3 def flatten_once 4 inject([]) { |v, e| v.concat(e)} 5 end 6 end
You need to create an account or log in to post comments to this site.