12/08/2018, 15:31
Các thao tác với hash trong ruby
Bài viết này sẽ giới thiệu các kiến thức về các thao tác khi làm việc với hash trong Ruby. Tạo một hash mới hash = {} // tạo hash có giá trị rỗng hash = {a: 1, b: 2} // => {a: 1, b: 2} , tạo hash có key là a với giá trị 1 và key b với giá trị 2 Lấy giá trị từ hash hash = {a: 1, b: 2} ...
Bài viết này sẽ giới thiệu các kiến thức về các thao tác khi làm việc với hash trong Ruby.
Tạo một hash mới
hash = {} // tạo hash có giá trị rỗng hash = {a: 1, b: 2} // => {a: 1, b: 2} , tạo hash có key là a với giá trị 1 và key b với giá trị 2
Lấy giá trị từ hash
hash = {a: 1, b: 2} hash[:a] // => 1 hash[:b] // => 2
Có thể dùng fetch
hash.fetch(:a) // => 1 hash.fetch(:b) // => 2
Thêm data vào trong hash
hash = {a: 1, b: 2} hash[:c] = 3 // => hash = {:a=>1, :b=>2, :c=>3}
Xóa data trong hash
hash.delete(:a) // hash = {:b=>2, :c=>3} h.clear // => hash = {}
Dùng reject để loại bỏ một số data trong hash theo điều kiện
hash = {a: 1, b: 2, c: 3} hash.reject {|key, value| key == :b} // => trả về {a: 1, c: 3}, // => giá trị hash vẫn giữ nguyên hash = {a: 1, b: 2, c: 3} hash.reject! {|key, value| key == :b} // => trả về {a: 1, c: 3}, // => giá trị hash = {a: 1, c: 3}
Các thao tác khác
Dùng each vòng lặp mỗi thuộc tình trong hash
hash = {a: 1, b: 2, c: 3} hash.each do |key, val| puts "#{key}" # => a b c end
Dùng each_key nếu chỉ cần key của hash
hash.each_key do |key| puts "#{key}" # => a b c end
Dùng each_value nếu chỉ cần value của hash
hash.each_value do |val| puts "#{val}" # 1 2 3 end
Kiểm tra key tồn tại trong hash
hash = {a: 1, b: 2, c: 3} hash.has_key?(:a) # => true hash.include?(:b) # => true hash.key?(:c) # => true hash.member?(:d) # => false
Kiểm tra hash rỗng empty?
hash = {a: 1, b: 2, c: 3} hash.empty? // true
Độ dài hash
hash = {a: 1, b: 2, c: 3} hash.length // => 3
Sắp xếp hash (sắp xếp theo key)
hash = {b: 1, c: 2, a: 3, d: 4} hash.sort // => [[:a, 3], [:b, 1], [:c, 2], [:d, 4]]
Merge 2 hash
hash1 = {a: 1, b: 2, c: 3} hash2 = {a: 5, d: 4} hash1.update(hash2) // {:a=>5, :b=>2, :c=>3, :d=>4} hash1.merge(hash2) // {:a=>5, :b=>2, :c=>3, :d=>4}