Bạn có thể sử dụng phương thức splice[]
để chèn một giá trị hoặc một mục vào một mảng tại một chỉ mục cụ thể trong JavaScript. Đây là một phương pháp rất mạnh và linh hoạt để thực hiện các thao tác trên mảng
Phương thức splice[]
có cú pháp như array.splice[startIndex, deleteCount, item1, item2,...]
. Để thêm các phần tử vào một mảng bằng phương pháp này, hãy đặt deleteCount
thành 0
và chỉ định ít nhất một phần tử mới, như minh họa trong ví dụ sau
Để thêm các phần tử vào cuối hoặc đầu một mảng, bạn chỉ cần sử dụng các phương thức mảng push[]
và unshift[]
. Xem hướng dẫn về Mảng JavaScript để tìm hiểu thêm về thao tác mảng
Để thêm một phần tử vào chỉ mục cụ thể, không có phương thức nào có sẵn trong đối tượng Array
. Nhưng chúng ta có thể sử dụng phương thức splice
đã có sẵn trong đối tượng Array
để đạt được điều này
Một mảng bắt đầu từ index 0
, Vì vậy, nếu chúng ta muốn thêm một phần tử làm phần tử đầu tiên của mảng, thì chỉ số của phần tử là
var num = [1, 2, 3, 6, 7, 8];
// insertAt[] arguments
// 1. source array - num
// 2. index to insert - 3
// 3. remaining are elements to insert
insertAt[num, 3, 4, 5]; // [1,2,3,4,5,6,7,8]
0. Nếu chúng ta muốn thêm một phần tử vào vị trí var num = [1, 2, 3, 6, 7, 8];
// insertAt[] arguments
// 1. source array - num
// 2. index to insert - 3
// 3. remaining are elements to insert
insertAt[num, 3, 4, 5]; // [1,2,3,4,5,6,7,8]
1 thì chỉ mục là chỉ mục var num = [1, 2, 3, 6, 7, 8];
// insertAt[] arguments
// 1. source array - num
// 2. index to insert - 3
// 3. remaining are elements to insert
insertAt[num, 3, 4, 5]; // [1,2,3,4,5,6,7,8]
2"Phương thức splice[] thay đổi nội dung của một mảng bằng cách loại bỏ hoặc thay thế các phần tử hiện có và/hoặc thêm các phần tử mới, trong mảng ban đầu [có nghĩa là mảng nguồn đã được sửa đổi]" - MDN
Giả sử bạn muốn thêm một mục vào một mảng, nhưng bạn không muốn thêm một mục vào cuối mảng. Bạn muốn thêm nó một cách rõ ràng vào một vị trí cụ thể của mảng
Nơi đó được gọi là chỉ số
Chỉ mục mảng bắt đầu từ
0
, vì vậy nếu bạn muốn thêm phần tử vào trước, bạn sẽ sử dụng chỉ mục0
, ở vị trí thứ hai, chỉ mục là1
, v.v.
Để thực hiện thao tác này, bạn sẽ sử dụng phương thức splice[]
của một mảng. Chức năng này rất mạnh và ngoài việc sử dụng chúng ta sẽ thực hiện ngay bây giờ, nó còn cho phép xóa các mục khỏi một mảng. Vì vậy, tiến hành một cách thận trọng
splice[]
có 3 đối số trở lên. Đầu tiên là chỉ số bắt đầu. nơi chúng tôi sẽ bắt đầu thực hiện các thay đổi. Thứ hai là tham số đếm xóa. Chúng tôi đang thêm vào mảng, vì vậy số lần xóa là 0 trong tất cả các ví dụ của chúng tôi. Sau này, bạn có thể thêm một hoặc nhiều mục để thêm vào mảng
Các chỉ mục JavaScript dựa trên số không, vì vậy phần tử đầu tiên trong mảng có chỉ mục là 0
và phần tử cuối cùng có chỉ mục là arr.length - 1
Điều có vẻ khó hiểu với bạn là
"Tại sao chúng tôi cung cấp đối số đếm xóa khi thêm một phần tử vào mảng?"
Phương pháp Array.splice[]
được sử dụng để làm 3 việc rất khác nhau
- Xóa các phần tử khỏi một mảng bắt đầu từ một chỉ mục cụ thể
- Thay thế các phần tử trong một mảng bắt đầu từ một chỉ mục cụ thể
- Thêm các phần tử vào một mảng bắt đầu từ một chỉ mục cụ thể
Đây là một ví dụ về việc thêm một phần tử mảng vào một chỉ mục, tuy nhiên, lần này chúng ta sẽ sử dụng các biến được đặt tên để dễ đọc hơn một chút
Ta bắt đầu thay đổi mảng tại chỉ số 1
, xóa phần tử 0
và thêm phần tử có giá trị b
vào đầu chỉ số [1
]
Phương thức Array.splice[]
trả về một mảng chứa các phần tử đã bị xóa, tuy nhiên, chúng tôi đặt tham số thứ hai [số lượng xóa] thành 0
, vì vậy nó trả về một mảng trống
Chúng tôi cũng có thể chèn nhiều hơn 1 phần tử, bắt đầu từ chỉ mục được cung cấp
Trong ví dụ này, chúng tôi thêm các phần tử b
và Array.splice[]
2 vào mảng, bắt đầu từ chỉ mục 1
Các phần tử được thêm vào mảng theo thứ tự chúng được cung cấp cho phương thức Array.splice[]
. Vì vậy, b
sẽ ở chỉ số 1
và Array.splice[]
2 sẽ ở chỉ số Array.splice[]
8
Nếu bạn có một mảng chứa các phần tử bạn muốn thêm bắt đầu từ chỉ mục đã chỉ định, bạn có thể sử dụng cú pháp trải rộng [. ]
Một cách dễ dàng để suy nghĩ về cú pháp lây lan [. ] là chúng ta đang giải nén các giá trị của mảng và chuyển chúng dưới dạng nhiều đối số được phân tách bằng dấu phẩy cho phương thức Array.splice[]
Bạn có thể tạo một hàm có thể tái sử dụng để chèn một hoặc nhiều phần tử vào một mảng tại một chỉ mục cụ thể
Hàm 0
0 lấy mảng, chỉ mục và các mục làm đối số và chèn các mục vào mảng tại chỉ mục đã chỉ định
Hàm 0
0 thay đổi mảng ban đầu
Nếu bạn không muốn thay đổi mảng ban đầu, hãy tạo một bản sao nông
Chúng tôi đã sử dụng cú pháp lây lan [. ] để tạo một bản sao nông của mảng và được gọi là phương thức Array.splice[]
trên bản sao
Mảng ban đầu không thay đổi
Bạn cũng có thể sử dụng phương thức 0
3 để thêm một hoặc nhiều phần tử mảng vào một chỉ mục cụ thể mà không làm thay đổi mảng
Thêm phần tử vào một mảng tại chỉ mục cụ thể bằng cách sử dụng 0
3
Để thêm một phần tử vào một mảng tại một chỉ mục cụ thể
- Sử dụng phương pháp
0
3 để lấy các phần của mảng trước và sau chỉ mục - Sử dụng cú pháp trải rộng để thêm phần tử vào giữa hai lát mảng
Chúng tôi đã tạo một hàm có thể sử dụng lại để lấy một mảng, một chỉ mục và các mục sẽ được chèn vào mảng tại chỉ mục đã chỉ định
Mảng. phương thức slice[] không sửa đổi mảng ban đầu
Thay vào đó, nó tạo ra một mảng mới [bản sao nông của bản gốc]
Các đối số chúng tôi chuyển đến phương thức 0
3 là
- chỉ mục bắt đầu - chỉ mục của phần tử đầu tiên được đưa vào mảng mới
- chỉ mục kết thúc - trích xuất các phần tử lên đến, nhưng không bao gồm chỉ mục này
Chúng tôi đã sử dụng phương pháp 0
3 để chia mảng thành hai phần - phần trước và phần sau chỉ mục mà chúng tôi muốn chèn phần tử vào đó
Bước cuối cùng là sử dụng cú pháp lây lan [. ] để chèn các phần tử được cung cấp vào giữa hai lát mảng
Hàm 0
0 không thay đổi mảng ban đầu, nó trả về một mảng mới với các phần tử được chỉ định được chèn vào chỉ mục được cung cấp