JavaScript tạo mảng có độ dài n với các giá trị
Nhưng khá thường xuyên, chúng tôi thấy rằng chúng tôi cần một bộ sưu tập có thứ tự, trong đó chúng tôi có phần tử thứ 1, thứ 2, thứ 3, v.v. Ví dụ: chúng tôi cần điều đó để lưu trữ danh sách thứ gì đó. người dùng, hàng hóa, phần tử HTML, v.v. Show Không thuận tiện khi sử dụng một đối tượng ở đây vì nó không cung cấp các phương thức để quản lý thứ tự các phần tử. Chúng tôi không thể chèn một thuộc tính mới “giữa” những thuộc tính hiện có. Các đối tượng không dành cho mục đích sử dụng đó Tồn tại một cấu trúc dữ liệu đặc biệt tên là 5, để lưu trữ các bộ sưu tập có thứ tựCó hai cú pháp để tạo một mảng trống
Hầu như mọi lúc, cú pháp thứ hai được sử dụng. Chúng tôi có thể cung cấp các yếu tố ban đầu trong ngoặc
Các phần tử mảng được đánh số, bắt đầu bằng số không Chúng ta có thể lấy một phần tử theo số của nó trong ngoặc vuông
Chúng ta có thể thay thế một phần tử
…Hoặc thêm một cái mới vào mảng
Tổng số phần tử trong mảng là 6 của nó
Chúng ta cũng có thể sử dụng 7 để hiển thị toàn bộ mảng
Một mảng có thể lưu trữ các phần tử của bất kỳ loại nào Ví dụ 0dấu phẩy sau Một mảng, giống như một đối tượng, có thể kết thúc bằng dấu phẩy 1Kiểu “dấu phẩy ở cuối” giúp chèn/xóa các mục dễ dàng hơn vì tất cả các dòng đều giống nhau Một bổ sung gần đây Đây là một bổ sung gần đây cho ngôn ngữ. Các trình duyệt cũ có thể cần polyfill Giả sử chúng ta muốn phần tử cuối cùng của mảng Một số ngôn ngữ lập trình cho phép sử dụng chỉ mục phủ định cho cùng một mục đích, như 8Mặc dù, trong JavaScript nó sẽ không hoạt động. Kết quả sẽ là 9, vì chỉ số trong ngoặc vuông được xử lý theo nghĩa đenChúng ta có thể tính toán chỉ số phần tử cuối cùng một cách rõ ràng và sau đó truy cập nó. 0 5Hơi rườm rà phải không? May mắn thay, có một cú pháp ngắn hơn. 1 0Nói cách khác, 2
Hàng đợi là một trong những cách sử dụng phổ biến nhất của mảng. Trong khoa học máy tính, điều này có nghĩa là một tập hợp các phần tử được sắp xếp theo thứ tự hỗ trợ hai thao tác
Mảng hỗ trợ cả hai hoạt động Trong thực tế, chúng tôi cần nó rất thường xuyên. Ví dụ: một hàng thư cần được hiển thị trên màn hình Có một trường hợp sử dụng khác cho mảng – cấu trúc dữ liệu có tên ngăn xếp Nó hỗ trợ hai hoạt động
Vì vậy, các yếu tố mới được thêm vào hoặc lấy luôn từ “cuối cùng” Một ngăn xếp thường được minh họa như một bộ bài. thẻ mới được thêm vào đầu hoặc lấy từ đầu Đối với ngăn xếp, mục được đẩy mới nhất sẽ được nhận trước, đó còn được gọi là nguyên tắc LIFO (Last-In-First-Out). Đối với hàng đợi, chúng tôi có FIFO (Nhập trước xuất trước) Mảng trong JavaScript có thể hoạt động như một hàng đợi và ngăn xếp. Chúng cho phép bạn thêm/xóa các phần tử, cả vào/từ đầu hoặc cuối Trong khoa học máy tính, cấu trúc dữ liệu cho phép điều này, được gọi là deque Các phương thức hoạt động với phần cuối của mảng 9Trích xuất phần tử cuối cùng của mảng và trả về nó 1Cả 1 và 1 đều trả về phần tử cuối cùng của mảng, nhưng 1 cũng sửa đổi mảng bằng cách loại bỏ nó 6Nối phần tử vào cuối mảng 2Cuộc gọi 5 bằng với 6Các phương thức hoạt động với phần đầu của mảng 7Trích xuất phần tử đầu tiên của mảng và trả về nó 3 8Thêm phần tử vào đầu mảng 4Các phương thức 6 và 8 có thể thêm nhiều phần tử cùng một lúc 5Mảng là một loại đối tượng đặc biệt. Dấu ngoặc vuông được sử dụng để truy cập thuộc tính 1 thực sự đến từ cú pháp đối tượng. Điều đó về cơ bản giống như 2, trong đó 3 là đối tượng, trong khi các số được sử dụng làm khóaChúng mở rộng các đối tượng cung cấp các phương thức đặc biệt để làm việc với các bộ sưu tập dữ liệu được sắp xếp theo thứ tự và cả thuộc tính 6. Nhưng cốt lõi nó vẫn là một đối tượngHãy nhớ rằng, chỉ có tám loại dữ liệu cơ bản trong JavaScript (xem chương Kiểu dữ liệu để biết thêm thông tin). Mảng là một đối tượng và do đó hoạt động như một đối tượng Ví dụ, nó được sao chép bằng cách tham khảo 6…Nhưng điều làm cho mảng thực sự đặc biệt là sự thể hiện bên trong của chúng. Công cụ cố gắng lưu trữ các phần tử của nó trong vùng bộ nhớ liền kề, lần lượt, giống như được mô tả trên các hình minh họa trong chương này, và cũng có các tối ưu hóa khác, để làm cho các mảng hoạt động rất nhanh Nhưng tất cả chúng đều bị hỏng nếu chúng ta ngừng làm việc với một mảng như với một “bộ sưu tập có thứ tự” và bắt đầu làm việc với nó như thể nó là một đối tượng thông thường Ví dụ, về mặt kỹ thuật chúng ta có thể làm điều này 7Điều đó là có thể, bởi vì mảng là đối tượng ở cơ sở của chúng. Chúng ta có thể thêm bất kỳ thuộc tính nào vào chúng Nhưng công cụ sẽ thấy rằng chúng ta đang làm việc với mảng như với một đối tượng thông thường. Tối ưu hóa theo mảng cụ thể không phù hợp với những trường hợp như vậy và sẽ bị tắt, lợi ích của chúng biến mất Các cách để lạm dụng một mảng
Vui lòng coi mảng là cấu trúc đặc biệt để làm việc với dữ liệu được sắp xếp. Họ cung cấp các phương pháp đặc biệt cho điều đó. Các mảng được điều chỉnh cẩn thận bên trong các công cụ JavaScript để hoạt động với dữ liệu được sắp xếp liền kề, vui lòng sử dụng chúng theo cách này. Và nếu bạn cần các khóa tùy ý, rất có thể bạn thực sự cần một đối tượng thông thường 00Các phương thức 01 chạy nhanh, trong khi 02 chạy chậmTại sao làm việc với phần cuối của một mảng nhanh hơn so với phần đầu của nó? 8Nó không đủ để lấy và loại bỏ phần tử có chỉ số 03. Các yếu tố khác cũng cần được đánh số lạiThao tác 7 phải thực hiện 3 việc
Càng nhiều phần tử trong mảng, càng có nhiều thời gian để di chuyển chúng, nhiều thao tác trong bộ nhớ hơn Điều tương tự cũng xảy ra với 8. để thêm một phần tử vào đầu mảng, trước tiên chúng ta cần di chuyển các phần tử hiện có sang bên phải, tăng chỉ số của chúngVà chuyện gì xảy ra với 01? . Để trích xuất một phần tử từ cuối, phương thức 9 làm sạch chỉ mục và rút ngắn 6Các hành động cho hoạt động 9 9Phương thức 9 không cần di chuyển bất cứ thứ gì, vì các phần tử khác giữ nguyên chỉ mục của chúng. Đó là lý do tại sao nó nhanh như chớpĐiều tương tự với phương thức 6Một trong những cách lâu đời nhất để quay vòng các mục mảng là vòng lặp 18 trên các chỉ mục 0Nhưng đối với mảng, có một dạng vòng lặp khác, 19 1 19 không cấp quyền truy cập vào số lượng của phần tử hiện tại, chỉ truy cập vào giá trị của nó, nhưng trong hầu hết các trường hợp, điều đó là đủ. Và nó ngắn hơnVề mặt kỹ thuật, vì mảng là đối tượng nên cũng có thể sử dụng 51 2Nhưng đó thực sự là một ý tưởng tồi. Có những vấn đề tiềm ẩn với nó
Nói chung, chúng ta không nên sử dụng 51 cho mảngThuộc tính 6 tự động cập nhật khi chúng ta sửa đổi mảng. Nói chính xác, nó thực sự không phải là số lượng giá trị trong mảng, mà là chỉ số lớn nhất cộng với mộtChẳng hạn, một phần tử có chỉ số lớn sẽ cho độ dài lớn 3Lưu ý rằng chúng ta thường không sử dụng các mảng như vậy Một điều thú vị khác về thuộc tính 6 là nó có thể ghiNếu chúng tôi tăng nó theo cách thủ công, sẽ không có gì thú vị xảy ra. Nhưng nếu chúng ta giảm nó, mảng sẽ bị cắt bớt. Quá trình này là không thể đảo ngược, đây là ví dụ 4Vì vậy, cách đơn giản nhất để xóa mảng là. 59Còn một cú pháp nữa để tạo mảng 5Nó hiếm khi được sử dụng, vì dấu ngoặc vuông 00 ngắn hơn. Ngoài ra, có một tính năng phức tạp với nóNếu 01 được gọi với một đối số duy nhất là một số, thì nó sẽ tạo một mảng không có phần tử, nhưng có độ dài nhất địnhHãy xem làm thế nào một người có thể tự bắn vào chân mình 6Để tránh những bất ngờ như vậy, chúng tôi thường sử dụng dấu ngoặc vuông, trừ khi chúng tôi thực sự biết mình đang làm gì Mảng có thể có các mục cũng là mảng. Chúng ta có thể sử dụng nó cho mảng nhiều chiều, ví dụ để lưu trữ ma trận 7Mảng có triển khai riêng của phương thức 02 trả về danh sách các phần tử được phân tách bằng dấu phẩyVí dụ 8Ngoài ra, hãy thử điều này 9Mảng không có 03, cũng không phải là 04 khả thi, chúng chỉ thực hiện chuyển đổi 02, vì vậy ở đây 00 trở thành một chuỗi rỗng, 07 trở thành 08 và 09 trở thành 10Khi toán tử nhị phân cộng 11 thêm một thứ gì đó vào một chuỗi, nó cũng chuyển đổi nó thành một chuỗi, vì vậy bước tiếp theo sẽ như thế này 0Mảng trong JavaScript, không giống như một số ngôn ngữ lập trình khác, không nên so sánh với toán tử 12Toán tử này không có cách xử lý đặc biệt nào đối với mảng, nó hoạt động với chúng như với bất kỳ đối tượng nào Hãy nhắc lại các quy tắc
So sánh nghiêm ngặt 18 thậm chí còn đơn giản hơn vì nó không chuyển đổi các loạiVì vậy, nếu chúng ta so sánh các mảng với 12, chúng sẽ không bao giờ giống nhau, trừ khi chúng ta so sánh hai biến tham chiếu chính xác cùng một mảngVí dụ 1Các mảng này là các đối tượng khác nhau về mặt kỹ thuật. Vì vậy, họ không bằng nhau. Toán tử 12 không thực hiện so sánh từng mụcSo sánh với nguyên thủy cũng có thể cho kết quả có vẻ kỳ lạ 2Ở đây, trong cả hai trường hợp, chúng ta so sánh một đối tượng nguyên thủy với một đối tượng mảng. Vì vậy, mảng 00 được chuyển đổi thành nguyên thủy với mục đích so sánh và trở thành một chuỗi rỗng 22Sau đó, quá trình so sánh tiếp tục với các nguyên thủy, như được mô tả trong chương Chuyển đổi loại 3Vì vậy, làm thế nào để so sánh các mảng? Điều đó thật đơn giản. không sử dụng toán tử 12. Thay vào đó, hãy so sánh chúng theo từng mục trong một vòng lặp hoặc sử dụng các phương pháp lặp được giải thích trong chương tiếp theoMảng là một loại đối tượng đặc biệt, thích hợp để lưu trữ và quản lý các mục dữ liệu có thứ tự Khai báo 4Cuộc gọi đến 24 tạo một mảng có độ dài nhất định, nhưng không có phần tử
Lấy các phần tử
Chúng ta có thể sử dụng một mảng như một deque với các thao tác sau
Để lặp qua các phần tử của mảng
Để so sánh các mảng, không sử dụng toán tử 12 (cũng như 42, 43 và các toán tử khác), vì chúng không có cách xử lý đặc biệt nào đối với mảng. Họ xử lý chúng như bất kỳ đối tượng nào và đó không phải là điều chúng ta thường muốnThay vào đó, bạn có thể sử dụng vòng lặp 19 để so sánh các mảng theo từng mụcChúng ta sẽ tiếp tục với mảng và nghiên cứu thêm các phương thức thêm, bớt, trích xuất các phần tử và sắp xếp mảng trong chương tiếp theo Các phương thức của mảng Làm cách nào để tạo một mảng có độ dài n trong JavaScript?Một cách phổ biến để tạo Mảng với độ dài nhất định là sử dụng hàm tạo Mảng . hằng LEN = 3; . bằng nhau (mảng. chiều dài, LEN); .
Làm cách nào để khởi tạo một mảng trong JavaScript với các giá trị?Bạn có thể khởi tạo một mảng với cú pháp Hàm tạo mảng sử dụng từ khóa mới . Hàm tạo mảng có ba dạng sau. cú pháp. var arrayName = new Array(); .
Làm cách nào để tạo một mảng từ 1 đến n trong JavaScript?Tạo một dãy mảng từ 1 đến N trên một dòng trong. . Sử dụng mảng. hàm from(). cố định N = 5; . từ ({độ dài. N}, (_, chỉ số) => chỉ số + 1);. Sử dụng toán tử Spread. cố định N = 5; . Mảng(N+1). . Sử dụng thư viện gạch dưới. var _ = yêu cầu('gạch dưới'); |