字面量方式创建哈希
irb(main):001:0> { foo: 1, bar: 2 }
=> {:foo=>1, :bar=>2}
clear
方法可以清除哈希里面的数据
irb(main):001:1> { foo: 1, bar: 2 }.clear
=> {}
delete
delete_if
可以删除和删除指定条件的键值对
irb(main):001:2> { foo: 1, bar: 2 }.delete(:foo)
=> 1
irb(main):001:3> { foo: 1, bar: 2 }.delete_if { |key, value| key == :foo || value == 1 }
=> {:bar=>2}
reject
reject!
也可以删除指定的键值对
irb(main):001:4> { foo: 1, bar: 2 }.reject { |key, value| key == :bar || value == 2 }
=> {:foo=>1}
invert
方法可以用来颠倒键值对
irb(main):001:5> { foo: 1, bar: 2 }.invert
=> {1=>:foo, 2=>:bar}
keys
values
可以获取键值的集合
irb(main):001:6> { foo: 1, bar: 2 }.keys
=> [:foo, :bar]
irb(main):001:7> { foo: 1, bar: 2 }.values
=> [1, 2]
has_key?
has_value?
方法可以检测哈希中是否包含指定的键值
irb(main):001:8> { foo: 1, bar: 2 }.has_key?(:foo)
=> true
irb(main):001:9> { foo: 1, bar: 2 }.has_value?(1)
=> true
each
each_key
each_value
用于迭代哈希
irb(main):002:0> { foo: 1, bar: 2 }.each { |key, value| }
=> {:foo=>1, :bar=>2}
irb(main):002:4> { foo: 1, bar: 2 }.each_key { |k| puts "key = #{k}" }
key = foo
key = bar
=> {:foo=>1, :bar=>2}
irb(main):002:5> { foo: 1, bar: 2 }.each_value { |v| puts "value = #{v}" }
value = 1
value = 2
=> {:foo=>1, :bar=>2}
merge
merge!
用来合并两个哈希
irb(main):002:6> { foo: 1 }.merge({ bar: 2 })
=> {:foo=>1, :bar=>2}
irb(main):002:7> { foo: 1 }.merge!({ bar: 2 })
=> {:foo=>1, :bar=>2}
symbolize_keys
symbolize_keys!
方法用来将所有的键转换为 symbol
irb(main):002:8> hash = JSON.parse('{ "foo": 1, "bar": 2 }')
=> {"foo"=>1, "bar"=>2}
irb(main):002:9> hash.symbolize_keys!
=> {:foo=>1, :bar=>2}
按键排升序降序
irb(main):002:10> { foo: 1, bar: 2 }.sort { |k, v| k.first <=> v.first }.to_h
=> {:bar=>2, :foo=>1}
irb(main):002:11> { foo: 1, bar: 2 }.sort { |k, v| v.first <=> k.first }.to_h
=> {:foo=>1, :bar=>2}
按值排升序降序
irb(main):002:12> { foo: 1, bar: 2 }.sort { |k, v| k.last <=> v.last }.to_h
=> {:foo=>1, :bar=>2}
irb(main):002:13> { foo: 1, bar: 2 }.sort { |k, v| v.last <=> k.last }.to_h
=> {:bar=>2, :foo=>1}
网友评论