Hướng dẫn javascript array splice

Bài này chúng ta sẽ tìm hiểu hàm splice trong javascript. Splice javascript là hàm dùng để thay thế một số phần tử trong mảng bằng phần tử khác.

Hướng dẫn javascript array splice

Hướng dẫn javascript array splice

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Hàm splice sẽ thay thế một hoặc một số phần tử của mảng bằng một hoặc một số phần tử khác, lưu ý rằng số phần tử bị bỏ đi có thể ít hơn số phần tử được thêm vào và ngược lại.

Splice javascript sẽ thay đổi các phần tử trong mảng bằng cách xóa bỏ hoặc thay thế các phần tử hiện có, hoặc thêm phần tử mới vào vị trí xác định.

Nếu bạn muốn tham khảo bằng một ví dụ đơn giản thì hãy xem ví dụ dưới đây.

Bài viết này được đăng tại [free tuts .net]

// Lưu ý: Chỉ mục bắt đầu từ 0. Vị trí 1 tức là chỉ mục 1 => là phần tử thứ 2

let months = ['Jan', 'March', 'April', 'June'];

// Thêm tại vị trí 1, không xóa phần tử nào.
months.splice(1, 0, 'Feb');
console.log(months);
// output: ["Jan", "Feb", "March", "April", "June"]

months = ['Jan', 'March', 'April', 'June'];

// Xóa 2 phần tử bắt đầu từ vị trí 1 (tức phần tử thứ 2),
// Lúc này mảng sẽ còn ['Jan', 'June']
// Sau đó thêm vào vị trí 1 phần tử "may"
months.splice(1, 2, 'May');

console.log(months);
// output: ["Jan", "May", "June"]

1. Hàm splice trong javascript là gì?

Splice javascript là hàm dùng để xóa các phần tử trong mảng, hoặc thay thế một phần tử trong mảng thành một hoặc nhiều phần tử khác. Nói cách khác:

  • Bạn có thể dùng hàm array splice để xóa phần tử.
  • Hoặc dùng để bổ sung phần tử vào một vị trí nào đó trong mảng.

Cú pháp như sau:

splice(start)
splice(start, deleteCount)
splice(start, deleteCount, item1)
splice(start, deleteCount, item1, item2, itemN)

Trong đó:

  • start - là vị trí chỉ mục bắt đầu thay thế.
  • deleteCount - là số phần tử sẽ bị lại bỏ, tính tử vị trí chỉ mục start, và bao gồm cả phần tử start. Nếu start mang giá trị 0 thì sẽ không có phần tử nào bị loại bỏ.
  • item1,., itemN - các phần tử sẽ được thêm vào từ vị trí start. Sau khi thêm, phần tử thứ start của mảng sẽ là item1.

Giá trị trả về: Là một mảng chứa tất cả những phần tử đã bị xóa. Nếu chỉ xóa một phần tử thì sẽ return về mảng có 1 phần tử. Nếu không có phần tử nào bị xóa thì sẽ return về mảng rỗng.

2. Các ví dụ với hàm splice trong javascript

Ví dụ 1: Sử dụng splice javascript để bổ sung một phần tử vào vị trí chỉ mục 2, không xóa phần tử nào.

let myFish = ['angel', 'clown', 'mandarin', 'sturgeon']
let removed = myFish.splice(2, 0, 'drum')

console.log(myFish);
// Kết quả: ["angel", "clown", "drum", "mandarin", "sturgeon"]

console.log(removed);
// Kết quả []

Ví dụ 2: Cũng tại vị trí chỉ mục 2, hãy bổ sung thêm hai phần tử.

let myFish = ['angel', 'clown', 'mandarin', 'sturgeon']
let removed = myFish.splice(2, 0, 'drum', 'guitar')

console.log(myFish )
// Kết quả: ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]

console.log(removed)
// Kết quả: []

Ví dụ 3: Xóa 1 phần tử tại chỉ mục 2, và thêm vào phần tử "trumpet"

let myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon']
let removed = myFish.splice(2, 2)

console.log(myFish )
// Kết quả:["parrot", "anemone", "sturgeon"]

console.log(removed)
// Kết quả:["blue", "trumpet"]

Ví dụ 4: Sử dụng phương thức splice để thay thế một đoạn của mảng.



Như vậy là mình đã hướng dẫn xong cách sử dụng hàm splice trong javascript.

1. Định nghĩa nhanh về splice

  • Nếu như pop, push, shift & unshift cho phép chúng ta lấy add hay remove item từ vị trí đầu tiên hoặc cuối cùng của array, thì splice được ví như là "a swiss army knife" cho phép chúng ta có thể tự do insert, remove & replace bao nhiêu item tuỳ ý.
  • Kết quả sau khi thực hiện method này sẽ làm thay đổi array gốc & lấy ra được các item mà chúng ta remove.

2. Một số ví dụ cụ thể

2.1 Remove - Xoá bỏ một hoặc nhiều phần tử trong array

// Cho một array chứa nhiều số
 let numbers = [1,2,3,4,5,6,7,8,9,10]
// Yêu cầu đơn giản là xoá đi số "5", với những ai mới làm quen với array có thể chúng ta sẽ đếm ra index của số 5 là "4". Sau đó sử dụng splice để cut thử nhé.
 let removeNumber = numbers.splice(4)
 console.log("numbers: ", numbers)
 console.log("remove number: ", removeNumber)
  • Sau khi chạy ví dụ trên, các bạn đã hiểu hoàn toàn chưa? Nếu chưa hay để lại cho mình một comment ở cuối bài viết nhé.
  • Array.splice với một tham số (param) được cung cấp điều này đồng nghĩa với việc: array sẽ được cut ở index thứ n với duy nhất 1 item. Còn nếu như chúng ta muốn cut nhiều item thì sao nhỉ ?
// Ví dụ ở đây có một mảng có chứa tên, nhưng không may trong mảng tên lại có chứa thừa một vài con số không liên quan. Thử áp dụng splice để xử lý trường hợp này nhé.
    let myName = ["Tuan",1,2,3,4,"Anh"]
    let removeNumber = myName.splice(1,4)
    console.log(myName)
        console.log(removeNumber)
  • Như các bạn đã thấy param thứ 2 của splice đã xuất hiện với ý nghĩa là "số lượng item cần xoá".

**2.2 Add một hoặc nhiều item vào giữa array **

  • Hãy tiếp tục với một ví dụ sử dụng splice để thêm item vào array nào.
    // Tiếp tục ví dụ từ những con số để các bạn mới có thể dễ hình dung về sự hoạt động của các method
    let numbers = [1,2,3,5]
    // 1 2 3 5 chúng ta có đánh rơi nhịp nào không nhỉ? À tất nhiên là có rồi :D giờ thử code với splice xem nào
    numbers.splice(3,0,4)
    console.log(numbers)
  • Có thể lúc này một số bạn phần lớn đã nhận thấy sự xuất hiện của param thứ 3. Khi làm việc với splice, khi bạn cần add thêm item vào mảng hãy nhớ rằng truyền item đó vào ở param thứ 3 trở đi. Nhưng tại sao param thứ 2 lại 0 nhỉ ? Comment ở cuối bài về ý kiến & mức độ hiểu của bạn cho mình ở cuối bài viết nhé. Hãy nhớ rằng chỉ khi bạn viết ra được những ý hiểu của bạn thì bạn mới có thể tiến xa được trong việc học lập trình. Và mình rất mong bình luận chia sẻ đóng góp của các bạn với bài viết của mình.

2.3 Replace item trong array

  • Ví dụ cuối cùng về công dụng của splice
      // Tiếp tục với array chứa các số 
    let numbers = [1,2,3,5,5]
      // Ở đây số 5 không may bị lặp lại 2 lần, vậy làm thế nào để thay thế số 5 thứ nhất bằng số 4 với splice ? 
    numbers.splice(3,1,4)
    console.log(numbers)
  • Kết quả sẽ xuất hiện khi các bạn code lại trên màn hình console của các bạn. Ví này thoạt nhìn qua cũng khá giống với ví dụ add mình đã nêu trên, nhưng hãy nhớ đấy là replace. Vậy replace là việc chúng ta xoá bỏ đi các item và thay thế các item đã xoá bằng các item khác.

3.Tổng kết lại

  • Với splice: add, removereplace
  • Kết quả splice: sẽ ảnh hưởng (thay đổi trực tiếp) lên array gốc.
  • index để bắt đầu cho việc add, removereplace luôn là param thứ nhất chúng ta truyền vào, tiếp theo param thứ hai là số lượng item chúng ta muốn remove (với bài toán ở ví dụ đầu tiên thì việc truyền param thứ hai vào thì mặc định Javascript sẽ remove số item còn lại). Các param từ thứ 3 trở đi dành cho các item khi chúng ta replace & add - không giới hạn kể cả truyền 69 param vẫn ok.