[Javascript] Những phương thức mà bạn cần biết khi thao tác với mảng

Tram Ho

Giới thiệu

Xin chào mọi người, buổi trước mình có viết bài về xử lý mảng trong ruby nhưng vấn đề là không phải lúc nào mình cũng làm việc đó ở bên back-end đúng không.
Thế nên hôm này mình sẽ bổ xung thêm cách xử lý mảng trong javascript cho nó có đôi có cặp, nói thế thôi chứ thực ra thì chúng giống na ná nhau đến 80% rồi nên cũng không có gì mới mẻ lắm đâu.
Lets’ go. Hãy tạo 1 mảng trước đã:

1. Length

Sẽ trả về tổng số phần tử của mảng.

Hầu hết mọi người thường làm rỗng một mảng bằng cách gán nó bằng một mảng rỗng, nhưng như thế có thật sự hiệu quả không?

Khi làm rỗng một mảng bằng cách gán nó bằngrỗng thì hiểu đơn giản là mảng đó sẽ quên đi địa chỉ ô nhớ lưu giá trị [1, 2, 3] và sẽ nhận địa chỉ ô nhớ lưu giá trị [] => dữ liệu cũ không bị xóa đi mà còn tạo thêm một mảng mới với giá trị rỗng.
Gán độ dài của mảng đó về không thì lại khác, việc này sẽ trực tiếp thao tác với địa chỉ ô nhớ lưu giá trị [1, 2, 3] và gán cho địa chỉ ô nhớ đó về rỗng.
Tip: Cách đơn giản cũng như hiệu quả nhất là sử dụng .length = 0 để làm rỗng một mảng

2. Push

Thêm một phẩn tử vào vị trí cuối cùng của mảng.

Tip: Thêm nhiều phần tử trong mảng thông qua Spread syntax (...) – một tính năng tương đối hay của ES6 có thể thay thế cho hàm concat.

3. Unshift

Thêm một phần tử vào đầu của mảng.

Tip: Thêm nhiều phần tử trong mảng thông qua Spread syntax (...)

4. Pop

Xóa bỏ một phần tử cuối cùng của mảng và trả về phần tử vừa được xóa.

5. Shift

Xóa bỏ một phần tử đầu tiên của mảng và cũng trả về phẩn tử vừa được xóa.

6. Join

Nối các phần tử của một mảng lại với nhau thành một chuỗi.

7. Concat

Kết hợp các mảng lại với nhau:

Tip: Cũng có thể sử dụng Spread syntax - (...) thay có concat

8. Reverse

Đảo ngược vị trí của các phẩn tử trong một mảng.

Tip: Đảo ngược một chuỗi (convert sang mảng -> đảo ngược -> convert lại string)

9. indexOf và lastIndexOf

indexOf trả về chỉ mục của phẩn tử tìm thấy đầu tiên trong mảng đó, nếu không có sẽ trả về -1.
lastIndexOf trả về chỉ mục của phần tử tìm thấy cuối cùng trong mảng đó, nếu không có sẽ trả về -1.

appletangerinebeefpizzaapplehotdogegg
Index012345
indexOf012305-1
lastIndexOf412345-1

10. Some

Kiểm tra nếu như có bất kỳ một phần tử nào thỏa mãn điều kiện đề ra thì trả vềtrue.

Trên là cách viết rút gọn sử dụng arrow function trong ES6 còn cú pháp đầy đủ sẽ như sau:

11. Every

Nghiêm ngặt hơn đó là every, chỉ trả về true khi tất cả các phần tử thỏa mãn điều kiện đề ra.

12. Sort

Sắp xếp các phần tử trong mảng, nếu không truyền vào điều kiện gì thì mặc định sẽ sắp xếp theo char code.

Note: Hãy cẩn thận khi sử dụng sort, nên nhớ rằng phương thức này sắp xếp dựa trên char code chứ không phải giá trị, ví dụ điển hình là 100 > 2 nhưng lại “100” < “2”.

Tip: Xáo trộn một mảng bằng sort.

13. Filter

Phương thức filter() tạo ra một mảng mới dự trên các điều kiện mà trả về kết quả true từ một mảng hiện có.

14. Reduce

Phương thức reduce() thực thi các phương thức xử lý đối với từng phần tử trong mảng và cuối cùng tổng hợp kết quả về trả về cho chúng ta.
Hãy xem một ví dụ đơn giản:

15. ReduceRight

Tương tự như reduce nhưng các phần tử truyền vào theo thứ tự từ phải qua trái (phần tử cuối cùng chạy trước, phần tử đầu tiên chạy sau cùng).

16. Map

Bạn muốn biến đổi dữ liệu của từng phần tử trong một mảng, hoặc bạn muốn lấy ra những thuộc tính của đối tượng trong mảng thì lúc đó hãy sử dụng map.
Map cho phép bạn tùy biến dữ liệu trên từng phần tử (cộng trừ nhân chia, thêm bớt các kiểu) để rồi ta được một mảng mới đã có dữ liệu từ mảng ban đầu nhưng đã qua xử lý.

17. Splice

Phương thức splice(ịndex, n, m) sẽ xóa bỏ n phần tử tính từ index trở đi và cũng thêm vào những phần tử mong muốn – m.

18. Slice

Phương thức slice(start, end) trả về một bản sao từ mảng ban đầu, trong đó:
start: vị trí bắt đầu trính xuất
end: vị trí kêt thúc, kết quả sẽ không bao gồm phần tử end.

Tip: Lấy ra n phần tử cuối cùng một mảng

19. forEach

Thực thi một callback function với từng phần tử trong mảng. Chúng ta không thể sử dung breakcontinue trong forEach:

Bonus

1. Loại bỏ phần tử trùng lặp

2. Lấy ra những phần tử cuối cùng trong một mảng

Đó là một mẹo trong khi sử dụng slice mình có nêu ở bên trên.

3. Duỗi thẳng một mảng

Trong ES2019 có đưa thêm một hàm đó là flat()
Hàm này nhận duỗi thẳng một mảng tùy theo số ta truyền vào.

Tham khảo

https://medium.com/better-programming/20-methods-to-get-to-know-javascript-array-operations-6935e757729b
https://medium.com/@PurpleGreenLemon/simplify-your-javascript-with-these-6-array-methods-db4c278f08c9

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo