12/08/2018, 15:20
Các thao tác với array trong ruby
Bài viết này sẽ giới thiệu các kiến thức cơ bản về các thao tác khi làm việc với các mảng trong Ruby. Tạo một mảng mới Có thể khai bảo một mảng mới bằng 2 cách a = [] hoặc a = Array.new Gán giá trị cho mảng a = [1, 2, 3, 4, 5, 6] // a = [1, 2, 3, 4, 5, 6] a = Array.new(3, "1") // a ...
Bài viết này sẽ giới thiệu các kiến thức cơ bản về các thao tác khi làm việc với các mảng trong Ruby.
Tạo một mảng mới
Có thể khai bảo một mảng mới bằng 2 cách
a = []
hoặc
a = Array.new
Gán giá trị cho mảng
a = [1, 2, 3, 4, 5, 6] // a = [1, 2, 3, 4, 5, 6] a = Array.new(3, "1") // a = ["1", "1", "1"]
Mảng trong mảng
a = Array.new( 3, Array.new(3, 1) ) // a = [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
Truy cập các phần tử trong mảng
a = [1, 2, 3, 4, 5] a[0] // trả về giá trị phần từ đầu tiên 1 a[1] // trả về giá trị 2 a[-1] // trả về giá trị phần từ đầu tiên đếm ngược lại từ cuối 5 a[-2] // trả về giá trị 4
Thêm phần tử vào mảng
a = [1, 2, 3, 4] a.push(5) // a = [1, 2, 3, 4, 5] a << 6 // a = [1, 2, 3, 4, 5, 6] a.unshift(0) // a = [0, 1, 2, 3, 4, 5, 6] thêm phân tử vào đầu mảng a.insert(4, "hi") // a = [0, 1, 2, 3, "hi", 4, 5, 6]
Loại bỏ các phần tử khỏi mảng
a = [0, 1, 2, 3, 4, 5, 6] a.pop // xóa phần tử cuối cùng (số 6) từ trong mảng và trả về 6, a= [0, 1, 2, 3, 4, 5] a.shift // xóa phần tử đầu tiên (số 0) và trả về số 0, a = [1, 2, 3, 4, 5] a.delete_at(2) // xóa số 3 và trả về số 3, a = [1, 2, 4, 5]
Xóa một giá trị cụ thể
a = [5, 5, 5, 1, 1, 5, 5] a.delete(1) // a = [5, 5, 5, 5, 5]
Các thao tác khac
- compact : loại bỏ giá trị nil
a = [1, 1, nil, 3, 4, nil, 5] a.compact // trả về [1, 1, 3, 4, 5], a = [1, 1, nil, 3, 4, nil, 5] a.compact! // trả về [1, 1, 3, 4, 5], a = [1, 1, 3, 4, 5]
- uniq
a = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4] a.uniq // trả về [1, 2, 3, 4], a = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4] a.uniq! // trả về [1, 2, 3, 4], a = [1, 2, 3, 4],
- reverse : đảo ngược thứ tự
a = [1, 2, 3, 4] a.reverse // trả về [4, 3, 2, 1] , a = [1, 2, 3, 4] a.reverse! // trả về [4, 3, 2, 1], a = [4, 3, 2, 1]
- each
a = [1, 2, 3, 4] a.each do |val| puts "#{val}!" // hiển thị 1! 2! 3! 4! end
- map
a = [1, 2, 3, 4] a.map { |val| 2 * val} // trả về [2, 4, 6, 8], a = [1, 2, 3, 4] a.map! { |val| 2 * val} // trả về [2, 4, 6, 8], a = [2, 4, 6, 8]
- select : lấy các giá trị thỏa mã điều kiện
a = [1, 2, 3, 4, 5, 6, 7, 8, 9] a.select {|val| val > 5} // trả về [6, 7, 8, 9], a = [1, 2, 3, 4, 5, 6, 7, 8, 9] a.select! {|val| val > 5} // trả về [6, 7, 8, 9], a = [6, 7, 8, 9]
- reject : bỏ các giá trị thỏa mã điều kiện
a = [1, 2, 3, 4, 5] a.reject { |val| val < 3 } // trả về [3, 4, 5], a = [1, 2, 3, 4, 5] a.reject! { |val| val < 3 } // trả về [3, 4, 5], a = [3, 4, 5]