Bạn có thể chuyển một mảng để bao gồm javascript không?
Điều đó là bình thường, bởi vì 3 loại bỏ một giá trị bởi 4. Đó là tất cả những gì nó làm. Phạt tiền đối tượng. Nhưng đối với mảng, chúng ta thường muốn các phần tử còn lại dịch chuyển và chiếm vị trí được giải phóng. Chúng tôi hy vọng sẽ có một mảng ngắn hơn bây giờ Show Vì vậy, nên sử dụng các phương pháp đặc biệt mảng. phương pháp mối nối là một con dao quân đội Thụy Sĩ cho các mảng. Nó có thể làm mọi thứ. chèn, xóa và thay thế các phần tử Cú pháp là
Nó sửa đổi 5 bắt đầu từ chỉ mục 6. loại bỏ các phần tử 7 và sau đó chèn 8 vào vị trí của chúng. Trả về mảng các phần tử đã loại bỏPhương pháp này rất dễ nắm bắt bằng các ví dụ Hãy bắt đầu với việc xóa
Dễ dàng, phải không? Trong ví dụ tiếp theo, chúng tôi loại bỏ 3 phần tử và thay thế chúng bằng hai phần tử còn lại
Ở đây chúng ta có thể thấy rằng 1 trả về mảng các phần tử đã bị loại bỏ
Phương thức 1 cũng có thể chèn các phần tử mà không cần xóa. Để làm được điều đó, chúng ta cần đặt 7 thành 4
Cho phép chỉ mục tiêu cực Ở đây và trong các phương thức mảng khác, chỉ số âm được cho phép. Họ chỉ định vị trí từ cuối mảng, như ở đây
phương pháp mảng. slice đơn giản hơn nhiều so với 5Cú pháp là
Nó trả về một mảng mới sao chép vào nó tất cả các mục từ chỉ mục 6 đến 7 (không bao gồm 7). Cả 6 và 7 đều có thể âm, trong trường hợp đó, vị trí từ cuối mảng được giả địnhNó tương tự như một phương thức chuỗi 1, nhưng thay vì các chuỗi con, nó tạo ra các mảng conVí dụ
Chúng ta cũng có thể gọi nó mà không cần đối số. 2 tạo một bản sao của 5. Điều đó thường được sử dụng để lấy một bản sao cho các phép biến đổi tiếp theo mà không ảnh hưởng đến mảng ban đầuphương pháp mảng. concat tạo một mảng mới bao gồm các giá trị từ các mảng khác và các mục bổ sung Cú pháp là
Nó chấp nhận bất kỳ số lượng đối số nào - mảng hoặc giá trị Kết quả là một mảng mới chứa các mục từ 5, sau đó là 5, 6, v.v.Nếu một đối số 7 là một mảng, thì tất cả các phần tử của nó sẽ được sao chép. Mặt khác, chính đối số được sao chépVí dụ 0Thông thường, nó chỉ sao chép các phần tử từ mảng. Các đối tượng khác, ngay cả khi chúng trông giống như mảng, được thêm vào như một tổng thể 1…Nhưng nếu một đối tượng dạng mảng có thuộc tính 8 đặc biệt, thì nó được coi là một mảng bởi 9. thay vào đó các yếu tố của nó được thêm vào 2các mảng. Phương thức forEach cho phép chạy một hàm cho mọi phần tử của mảng cú pháp 3Chẳng hạn, điều này cho thấy từng phần tử của mảng 4Và mã này phức tạp hơn về vị trí của chúng trong mảng mục tiêu 5Kết quả của hàm (nếu nó trả về bất kỳ) bị loại bỏ và bỏ qua Bây giờ hãy giới thiệu các phương thức tìm kiếm trong một mảng Các phương thức arr. indexOf và arr. bao gồm có cú pháp tương tự và về cơ bản giống như đối tác chuỗi của chúng, nhưng hoạt động trên các mục thay vì ký tự
Thông thường các phương thức này được sử dụng chỉ với một đối số. 1 để tìm kiếm. Theo mặc định, tìm kiếm là từ đầuVí dụ 6Xin lưu ý rằng 9 sử dụng đẳng thức nghiêm ngặt 0 để so sánh. Vì vậy, nếu chúng ta tìm kiếm 1, nó sẽ tìm thấy chính xác 1 chứ không phải số 0Nếu chúng tôi muốn kiểm tra xem 1 có tồn tại trong mảng hay không và không cần chỉ mục, thì nên ưu tiên sử dụng 4phương pháp mảng. lastIndexOf giống như 9, nhưng tìm kiếm từ phải sang trái 7Phương thức Một tính năng nhỏ nhưng đáng chú ý của 6 là nó xử lý chính xác 7, không giống như 9 8Đó là bởi vì 6 đã được thêm vào JavaScript muộn hơn nhiều và sử dụng thuật toán so sánh cập nhật hơn trong nội bộHãy tưởng tượng chúng ta có một mảng các đối tượng. Làm thế nào để chúng ta tìm thấy một đối tượng với điều kiện cụ thể? đây là mảng. phương thức find(fn) có ích Cú pháp là 9Hàm được gọi lần lượt cho các phần tử của mảng
Nếu nó trả về 7, quá trình tìm kiếm bị dừng, 1 được trả về. Nếu không tìm thấy gì, 07 được trả lạiVí dụ: chúng tôi có một mảng người dùng, mỗi người có các trường 08 và 09. Hãy tìm cái có 10 0Trong thực tế, các mảng đối tượng là một điều phổ biến, vì vậy phương thức 11 rất hữu íchLưu ý rằng trong ví dụ này, chúng tôi cung cấp cho 11 hàm 13 với một đối số. Đó là điển hình, các đối số khác của chức năng này hiếm khi được sử dụngmảng. Phương thức findIndex có cùng cú pháp, nhưng trả về chỉ mục nơi phần tử được tìm thấy thay vì chính phần tử đó. Giá trị của 3 được trả về nếu không tìm thấy gìcác mảng. Phương thức findLastIndex giống như 15, nhưng tìm kiếm từ phải sang trái, tương tự như 16Đây là một ví dụ 1Phương thức 11 tìm kiếm một phần tử (đầu tiên) duy nhất làm cho hàm trả về 7Nếu có thể có nhiều, chúng ta có thể sử dụng arr. bộ lọc (fn) Cú pháp tương tự như 11, nhưng 20 trả về một mảng gồm tất cả các phần tử phù hợp 2Ví dụ 3Hãy chuyển sang các phương thức chuyển đổi và sắp xếp lại một mảng mảng. phương pháp bản đồ là một trong những phương pháp hữu ích nhất và thường được sử dụng Nó gọi hàm cho từng phần tử của mảng và trả về mảng kết quả Cú pháp là 4Chẳng hạn, ở đây chúng tôi chuyển đổi từng phần tử thành chiều dài của nó 5Cuộc gọi đến arr. sort() sắp xếp mảng tại chỗ, thay đổi thứ tự phần tử của nó Nó cũng trả về mảng đã sắp xếp, nhưng giá trị trả về thường bị bỏ qua, vì bản thân 5 đã được sửa đổiVí dụ 6Bạn có nhận thấy bất cứ điều gì lạ trong kết quả? Thứ tự trở thành 22. Không đúng. Nhưng tại sao?Các mục được sắp xếp theo chuỗi theo mặc định Theo nghĩa đen, tất cả các phần tử được chuyển đổi thành chuỗi để so sánh. Đối với các chuỗi, thứ tự từ điển được áp dụng và thực sự là 23Để sử dụng thứ tự sắp xếp của riêng mình, chúng ta cần cung cấp một hàm làm đối số của 24Hàm sẽ so sánh hai giá trị tùy ý và trả về 7Chẳng hạn, để sắp xếp dưới dạng số 8Bây giờ nó hoạt động như dự định Hãy bước sang một bên và suy nghĩ những gì đang xảy ra. 5 có thể là mảng của bất cứ thứ gì, phải không? . Chúng tôi có một bộ một số mặt hàng. Để sắp xếp nó, chúng ta cần một hàm sắp xếp biết cách so sánh các phần tử của nó. Mặc định là thứ tự chuỗiPhương thức 26 thực hiện thuật toán sắp xếp chung. Chúng tôi không cần quan tâm đến cách thức hoạt động bên trong của nó (hầu hết thời gian là một quicksort được tối ưu hóa hoặc Timsort). Nó sẽ duyệt mảng, so sánh các phần tử của nó bằng cách sử dụng hàm được cung cấp và sắp xếp lại chúng, tất cả những gì chúng ta cần là cung cấp 27 thực hiện phép so sánhNhân tiện, nếu chúng ta muốn biết những yếu tố nào được so sánh – không có gì ngăn cản việc cảnh báo chúng 9Thuật toán có thể so sánh một phần tử với nhiều phần tử khác trong quy trình, nhưng nó cố gắng thực hiện càng ít phép so sánh càng tốt Hàm so sánh có thể trả về bất kỳ số nào Trên thực tế, một hàm so sánh chỉ được yêu cầu trả về một số dương để nói “lớn hơn” và một số âm để nói “ít hơn” Điều đó cho phép viết các hàm ngắn hơn 0Chức năng mũi tên cho tốt nhất Ghi nhớ chức năng mũi tên? 1Điều này hoạt động chính xác giống như phiên bản dài hơn ở trên Sử dụng Nhớ thuật toán so sánh? Đối với nhiều bảng chữ cái, tốt hơn là sử dụng phương pháp 29 để sắp xếp chính xác các chữ cái, chẳng hạn như 30Ví dụ: hãy sắp xếp một vài quốc gia bằng tiếng Đức 2phương pháp mảng. đảo ngược đảo ngược thứ tự của các phần tử trong 5Ví dụ 3Nó cũng trả về mảng 5 sau khi đảo ngượcĐây là tình huống từ cuộc sống thực. Chúng tôi đang viết một ứng dụng nhắn tin và người đó nhập danh sách người nhận được phân tách bằng dấu phẩy. 33. Nhưng đối với chúng tôi, một dãy tên sẽ thoải mái hơn nhiều so với một chuỗi. Làm thế nào để có được nó?các str. phương thức split(delim) thực hiện chính xác điều đó. Nó chia chuỗi thành một mảng bằng dấu phân cách đã cho 34Trong ví dụ bên dưới, chúng tôi chia tách bằng dấu phẩy theo sau là dấu cách 4Phương thức 35 có đối số số thứ hai tùy chọn – giới hạn về độ dài mảng. Nếu nó được cung cấp, thì các phần tử bổ sung sẽ bị bỏ qua. Trong thực tế nó hiếm khi được sử dụng mặc dù 5Chia thành các chữ cái Lệnh gọi tới 36 với một số trống 37 sẽ chia chuỗi thành một mảng các chữ cái 6mảng cuộc gọi. tham gia (keo) làm ngược lại với 35. Nó tạo ra một chuỗi gồm 5 mục được nối bởi 40 giữa chúngVí dụ 7Khi chúng ta cần lặp lại một mảng – chúng ta có thể sử dụng 41, 42 hoặc 43Khi chúng ta cần lặp lại và trả về dữ liệu cho từng phần tử – chúng ta có thể sử dụng 44Các phương thức arr. giảm và sắp xếp. reduceRight cũng thuộc giống đó, nhưng phức tạp hơn một chút. Chúng được sử dụng để tính toán một giá trị duy nhất dựa trên mảng Cú pháp là 8Hàm được áp dụng lần lượt cho tất cả các phần tử của mảng và “mang” kết quả của nó đến lần gọi tiếp theo Tranh luận
Khi hàm được áp dụng, kết quả của lệnh gọi hàm trước được chuyển sang hàm tiếp theo dưới dạng đối số đầu tiên Vì vậy, đối số đầu tiên về cơ bản là bộ tích lũy lưu trữ kết quả tổng hợp của tất cả các lần thực hiện trước đó. Và cuối cùng nó trở thành kết quả của 51Có vẻ phức tạp? Cách dễ nhất để nắm bắt đó là bằng ví dụ Ở đây chúng tôi nhận được tổng của một mảng trong một dòng 9Hàm được chuyển đến 51 chỉ sử dụng 2 đối số, như vậy là đủHãy xem chi tiết về những gì đang xảy ra
Quy trình tính toán Hoặc ở dạng bảng, trong đó mỗi hàng đại diện cho một lệnh gọi hàm trên phần tử mảng tiếp theo 53 57resultthe first call 4 9 9the second call 9 61 70the third call 70 70 73the fourth call 73 75 76the fifth call 76 78 79Ở đây chúng ta có thể thấy rõ kết quả của cuộc gọi trước đó trở thành đối số đầu tiên của cuộc gọi tiếp theo như thế nào Chúng ta cũng có thể bỏ qua giá trị ban đầu 0Kết quả là như nhau. Đó là bởi vì nếu không có phần đầu tiên, thì 51 sẽ lấy phần tử đầu tiên của mảng làm giá trị ban đầu và bắt đầu lặp lại từ phần tử thứ 2Bảng tính giống như trên, trừ hàng đầu tiên Nhưng việc sử dụng như vậy đòi hỏi phải hết sức cẩn thận. Nếu mảng trống, thì cuộc gọi 51 không có giá trị ban đầu sẽ báo lỗiĐây là một ví dụ 1Vì vậy, bạn nên luôn chỉ định giá trị ban đầu phương pháp mảng. reduceRight làm tương tự, nhưng đi từ phải sang trái Mảng không tạo thành một loại ngôn ngữ riêng biệt. Chúng dựa trên các đối tượng Vì vậy, 82 không giúp phân biệt một đối tượng đơn giản với một mảng 2…Nhưng mảng được sử dụng thường xuyên đến mức có một phương pháp đặc biệt cho việc đó. Mảng. isArray(giá trị). Nó trả về 7 nếu 84 là một mảng và 1 nếu ngược lại 3Hầu như tất cả các phương thức mảng gọi các hàm – như 11, 20, 44, với một ngoại lệ đáng chú ý là 89, chấp nhận một tham số bổ sung tùy chọn 90Tham số đó không được giải thích trong các phần trên, vì nó ít được sử dụng. Nhưng để hoàn thiện, chúng ta phải che đậy nó Đây là cú pháp đầy đủ của các phương thức này 4Giá trị của tham số 90 trở thành 92 cho 93Ví dụ: ở đây chúng tôi sử dụng một phương thức của đối tượng 94 làm bộ lọc và 90 chuyển ngữ cảnh 5Nếu trong ví dụ trên chúng ta sử dụng 96, thì 97 sẽ được gọi như một hàm độc lập, với 98, do đó dẫn đến lỗi ngay lập tứcCó thể thay thế lệnh gọi tới 99 bằng ________________00, điều đó cũng tương tự. Cái sau được sử dụng thường xuyên hơn, vì nó dễ hiểu hơn một chút đối với hầu hết mọi ngườiMột cheat sheet của các phương pháp mảng
Xin lưu ý rằng các phương thức 89, 41 và 1 tự sửa đổi mảngNhững phương pháp này là những phương pháp được sử dụng nhiều nhất, chúng bao gồm 99% các trường hợp sử dụng. Nhưng có rất ít người khác
Để biết danh sách đầy đủ, hãy xem hướng dẫn Ngay từ cái nhìn đầu tiên, có vẻ như có rất nhiều phương pháp, khá khó nhớ. Nhưng thực ra điều đó dễ dàng hơn nhiều Xem qua cheat sheet chỉ để biết về chúng. Sau đó giải quyết các nhiệm vụ của chương này để thực hành, để bạn có kinh nghiệm với các phương thức mảng Sau này, bất cứ khi nào bạn cần làm gì đó với một mảng, và bạn không biết làm thế nào – hãy đến đây, xem cheat sheet và tìm phương pháp phù hợp. Ví dụ sẽ giúp bạn viết nó một cách chính xác. Bạn sẽ sớm tự động ghi nhớ các phương pháp mà không cần nỗ lực cụ thể từ phía bạn Làm cách nào để chuyển nhiều giá trị trong mảng trong JavaScript?Sử dụng Mảng. phương thức concat() để đẩy nhiều giá trị vào một mảng , e. g. kết quả const = mảng. concat('b', 'c', 'd');.
Mảng có bao gồm hoạt động với các đối tượng không?Có nhiều phương pháp để kiểm tra một mảng có đối tượng hay không. Sử dụng phương thức bao gồm (). Nếu mảng có chứa đối tượng/phần tử thì có thể xác định bằng cách sử dụng phương thức include() . Phương thức này trả về true nếu mảng chứa đối tượng/phần tử khác trả về false.
Tôi có thể sử dụng bao gồm JavaScript không?Phương thức include() xác định xem một mảng có bao gồm một giá trị nhất định trong số các mục nhập của nó hay không, trả về giá trị đúng hoặc sai nếu thích hợp .
Làm cách nào để kiểm tra mảng chứa nhiều giá trị trong JavaScript?Để kiểm tra xem có tồn tại nhiều giá trị trong một mảng hay không. . Sử dụng phương thức every() để lặp qua mảng giá trị Trên mỗi lần lặp, hãy sử dụng phương thức indexOf để kiểm tra xem giá trị có được chứa trong mảng khác không Nếu tất cả các giá trị tồn tại trong mảng, mọi phương thức sẽ trả về true |