Hướng dẫn dùng splice.vom JavaScript

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.

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.

Run

var subject = ["php", "css", "html", "js"]; document.getElementById["demo"].innerHTML = subject; function myFunction[] { subject.splice[1, 1, "python", "c#", "ios"]; document.getElementById["demo"].innerHTML = subject; }

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

Bài viết đc dịch lại từ: //medium.freecodecamp.org/lets-explore-slice-splice-spread-syntax-in-javascript-e242a6f21e60

Tác giả: Parathan Thiyagalingam

Cả slice và splice đều dùng để thao tác với mảng, hãy cùng tìm hiểu xem chúng hoạt động thế nào nhé.

Slice

Hàm slice nhận vào 2 tham số Tham số thứ 1: là vị trí bắt đầu lựa chọn. Ví dụ

var arr1 = [1,5,8,9];
arr1.slice[1]; // [5,8,9]

Nó sẽ trả về các phần tử từ vị trí thứ nhất [ số 5 ] Tham số thứ 2: là vị trí kết thúc lựa chọn. Nếu bạn ko truyền tham số này, nó sẽ trả về các phần tử từ vị trí bắt đầu đến vị trí cuối cùng của mảng.

var arr1 = [1,5,8,9];
console.log[arr1.slice[1,3]];
//[ 5, 8 ]

Nếu bạn truyền vào một số âm, vị trí sẽ đc đếm từ cuối mảng đổ xuống

var arr1 = [1,5,8,9];
console.log[arr1.slice[-2]];
//[ 8, 9 ]

Lưu ý: Slice luôn trả về các phần tử đc lựa chọn từ mảng và ko làm thay đổi mảng đó.

var arr1 = [1,5,8,9];
arr1.slice[2];
console.log[arr1];
// [ 1, 5, 8, 9 ]

Splice

Hàm splice có thể nhận nhiều tham số cùng lúc.

Tham số thứ 1: vị trí mà phần tử mới hoặc phần tử đã tồn tại sẽ đc thêm vào/xóa đi. Nếu giá trị này là âm, vị trí đó sẽ đc đếm từ cuối mảng đổ xuống. Tham số thứ 2: Số các phần tử để xóa bỏ khỏi mảng bắt đầu từ vị trí ở trên. Nếu là 0 thì sẽ ko xóa phần tử nào cả, còn nếu ko đc truyền thì nó sẽ xóa tất cả các phần tử bắt đầu từ vị trí ở trên.

var arr1 = [1,5,8,9];
console.log[arr1.splice[1,2]];
// [ 5, 8 ]

Tham số thứ 3 đến thứ n: Giá trị của phần tử mà bạn muốn thêm vào mảng.

var arr1 = [1,5,8,9];
console.log[arr1.splice[1,2,'Hi','Medium']];
// [5,8]

Lưu ý:

  • Splice chỉ trả về những phần tử đã đc xóa khỏi mảng.
  • Splice sẽ làm thay đổi mảng gốc
var arr1 = [1,5,8,9];
arr1.splice[1,2,'Hi','Medium'];
console.log[arr1];
// [ 1, 'Hi', 'Medium', 9 ]

Spread syntax

Cho phép một đối tượng kiểu iterable như array epxression hoặc string có thể đc trải ra ở những chỗ mà có thể truyền 0 hoặc nhiều nhiều tham số [ lúc gọi hàm ] hoặc phần tử [ trong array ]. Hoặc một object expression có thể đc trải ra để truyền 0 hoặc nhiều cặp key-value

Ví dụ:

var arr1 = [1,3,6,7];
var arr2 = [5,arr1,8,9];
console.log[arr2];
// [ 5, [ 1, 3, 6, 7 ], 8, 9 ]

Ví dụ tôi muốn nó thành một mảng kiểu như [ 5, 1, 3, 6, 7, 8, 9 ] Tôi có thể dùng spread syntax để làm như sau:

var arr1 = [1,3,6,7];
var arr2 = [5,...arr1,8,9];
console.log[arr2];
//[ 5, 1, 3, 6, 7, 8, 9 ]

Một cách sử dụng rất thông dụng khác là để copy một mảng:

var arr = [1, 2, 3];
var arr2 = arr;
arr2.push[4];
console.log[arr2];
// [ 1, 2, 3, 4 ]
console.log[arr];
// [ 1, 2, 3, 4 ]

Tôi đã thêm 4 vào arr2, nhưng nó cũng khiến arr bị thay đổi theo. Chúng ta có thể sử dụng spread syntax để xử lý vấn đề này:

var arr = [1, 2, 3];
var arr2 = [...arr]; // giống arr.slice[]
arr2.push[4];
console.log[arr2];
// [ 1, 2, 3, 4 ]
console.log[arr];
// [ 1, 2, 3]

Kết luận:

Hàm slice sẽ:

  • Trả về những phần tử đã đc chọn từ mảng
  • Nhận vào 2 tham số
  • Ko làm thay đổi mảng gốc

Hàm splice sẽ:

  • Trả về những phần tử đã đc xóa khỏi mảng
  • Nhận vào nhiều tham số
  • Làm thay đổi mảng gốc

Cám ơn các bạn đã đọc!

Chủ Đề