Phương thức slice() của Javascript sẽ không thay đổi hoặc thay đổi dữ liệu gốc. Hướng dẫn này sẽ hướng dẫn bạn cách sử dụng kỹ thuật lát cắt Javascript và cách tận dụng tiềm năng bất biến của nó.
Nói một cách đơn giản, hàm slice javascript là một phương thức chuỗi hoặc mảng tích hợp sẵn trả về một bản sao nông của một phần của mảng thành một đối tượng mảng mới, trong đó 'bắt đầu' và 'kết thúc' là các chỉ số của mảng. Sẽ không có sửa đổi nào đối với mảng ban đầu.
const language = ["javascript", "java", "ruby", "rust", "python"]; console.log(language.slice(2)); // ['ruby', 'rust', 'python']
Chúng tôi cắt tại chỉ mục 2 bằng cách sử dụng cơ sở không có chỉ mục, tạo ra một mảng mới có chứa phần tử được cắt. Nhưng nếu chúng ta kiểm tra mảng gốc (ngôn ngữ) thì sao? Nó sẽ được thay đổi? Kỹ thuật cắt lát javascript, không giống như chức năng ghép nối javascript, không làm thay đổi hoặc ảnh hưởng đến dữ liệu gốc.
Phương pháp lát Javascript khá đơn giản để sử dụng; tuy nhiên để hiểu đầy đủ về nó, chúng tôi sẽ nhấn mạnh cú pháp của nó.
Cú pháp cho điều này là gì? Cú pháp này được viết đơn giản bằng cách bao quanh từ 'slice' với dấu ngoặc đơn '()' như sau:
slice()
Vì đây là một phương thức nên nó chấp nhận các đối số, cho phép bạn linh hoạt hơn đối với những gì bạn có thể làm với một mảng bằng cách sử dụng hàm slice.
Chúng như sau:
Tham số bắt đầu, đơn giản chỉ ra chỉ mục mà tại đó phương thức lát cắt sẽ bắt đầu, có thể được truyền cho hàm lát cắt. Để xem lại ví dụ trước, phương thức slice chấp nhận 2 làm đầu vào, nghĩa là bắt đầu từ chỉ mục 2. Nếu đối số bắt đầu không được chỉ định, chỉ mục sẽ được đặt thành 0. Đối số kết thúc cũng có thể được gửi đến lát cắt nhưng nó phụ thuộc vào tham số bắt đầu để hoạt động bình thường. Đối số kết thúc hướng dẫn mảng tại chỉ mục nào nó sẽ hoàn thành việc trích xuất phần tử. Nó thực hiện điều này bằng cách không bao gồm phần cuối, mà chỉ tính đến phần cuối. Nếu đối số kết thúc không được chỉ định, độ dài mảng đầy đủ sẽ được trả về.
slice(start) slice(start,end)
Sử dụng phương thức slice: giả sử chúng ta có một mảng chứa một số loại ngôn ngữ lập trình và chúng ta muốn chọn ba phần tử từ mảng. Chúng ta chỉ cần viết hàm slice(1,4), cung cấp hai tham số dựa trên chỉ mục là bắt đầu và kết thúc. Quá trình trích xuất sẽ bắt đầu với chỉ mục đã chỉ định, 1 và kết thúc bằng 4, nhưng thay vì trả về phần tử thứ tư chính xác, nó sẽ cung cấp phần tử trước phần tử thứ tư.
Đây là cách nó được thực hiện:
const language = ["javascript", "java", "ruby", "rust", "python"]; console.log(language.slice(1,4)); // ['ruby', 'rust', 'python']
Mảng mới được trả về mà không sửa đổi mảng hiện có.
const language = ["javascript", "java", "ruby", "rust", "python"]; console.log(language.slice(1,4)); // ['java', 'ruby', 'rust'] console.log(language); // ['javascript', 'java', 'ruby', 'rust', 'python']
Mảng javascript có thể được sử dụng trong các lĩnh vực sau; tuy nhiên, cần lưu ý rằng phương pháp lát cắt cũng có thể được sử dụng trên các mảng không phải mảng.
Sử dụng phương pháp lát Javascript trên các đối tượng.
Sử dụng phương thức lát Javascript trên mảng thưa thớt.
Sử dụng phương thức lát Javascript để chuyển đổi các mảng không thành mảng.
Phương thức slice trong javascript hoạt động trên các đối tượng bằng cách trước tiên xem xét độ dài thuộc tính của đối tượng, sau đó đọc các thuộc tính khóa số nguyên từ đầu đến cuối. Và đặt chúng vào một mảng mới. Nó sử dụng phương thức call().
const arrayLike = { length: 3, 0: 2, 1: 3, 2: 4, }; console.log(Array.prototype.slice.call(arrayLike, 1, 3)); // [3, 4]
Khi phương thức lát cắt javascript được sử dụng trên một mảng thưa thớt, mảng được trả về từ slice()
có thể thưa thớt nếu nguồn thưa thớt.
console.log([1, 2, , 4, 5].slice(1, 4)) // [2, empty, 4]
Để xây dựng một hàm tiện ích chuyển đổi một đối tượng dạng mảng thành một mảng, hãy sử dụng phương thức slice Javascript, cũng như các phương thức call()
và bind()
.
const sliceEl = Function.prototype.call.bind(Array.prototype.slice); function list() { return sliceEl(arguments); } const listed = list(1, 2, 3) console.log(listed) //[1, 2, 3]
Sự khác biệt giữa phương pháp lát và ghép trong Javascript là gì?
Slice được sử dụng để tạo một mảng mới từ mảng ban đầu, trong khi splice được sử dụng để thêm/xóa các phần tử khỏi mảng ban đầu. Trong trường hợp của một lát cắt, những thay đổi không được phản ánh trong mảng ban đầu; tuy nhiên, trong trường hợp ghép nối, các thay đổi được phản ánh trong mảng ban đầu.
Điểm giống nhau giữa phương pháp lát và ghép là gì?
Điểm giống nhau chính giữa chúng là cả hai đều là phương thức của mảng javascript.
Khi nào tôi sử dụng phương pháp lát cắt?
Nếu bạn không muốn dữ liệu gốc bị sửa đổi hoặc thay đổi trong khi thực hiện một tác vụ, thì phương pháp lát cắt là cách tốt nhất để thực hiện. Đây là một cách tiếp cận điển hình trong ReactJs.
Cuối cùng, phương thức javascript slice() là một cách để sao chép. Nó không thay đổi mảng ban đầu mà thay vào đó cung cấp một bản sao nông với một số mục giống như mảng ban đầu. Chúng chấp nhận hai tham số tùy chọn, 'bắt đầu' và 'kết thúc', đồng thời lấy các phần tử khỏi mảng tùy thuộc vào các tham số này. Chúng được áp dụng cho các mảng không. Đối tượng, mảng thưa thớt, v.v.