Hướng dẫn copy array javascript without reference - sao chép javascript mảng mà không có tham chiếu
Trong JavaScript, các kỹ thuật bản sao sâu phụ thuộc vào các yếu tố trong một mảng. Hãy bắt đầu ở đó. Show
Ba loại yếu tốCác yếu tố có thể là: giá trị theo nghĩa đen, cấu trúc theo nghĩa đen hoặc nguyên mẫu.
Từ các yếu tố này, chúng ta có thể tạo ba loại mảng.
Kỹ thuật sao chép sâu phụ thuộc vào ba loại mảngDựa trên các loại yếu tố trong mảng, chúng ta có thể sử dụng các kỹ thuật khác nhau để sao chép sâu. Kỹ thuật sao chép sâuĐiểm chuẩnhttps://www.measurethat.net/Benchmarks/Show/17502/0/deep-copy-comparison
Vì vậy, để trả lời câu hỏi ...Câu hỏi
Câu trả lờiVì 7 là một loạt các giá trị theo nghĩa đen (boolean, số hoặc chuỗi), bạn có thể sử dụng bất kỳ kỹ thuật sao chép sâu nào được thảo luận ở trên, trong đó slice() và lây lan ____10 có hiệu suất cao nhất.
Khi chúng ta cần sao chép một mảng, chúng ta thường sử dụng lát cắt. Nhưng với ES6, bạn cũng có thể sử dụng toán tử lây lan để nhân đôi một mảng. Khá tiện lợi, phải 🤩 # Tại sao tôi có thể sử dụng function copy(aObject) { // Prevent undefined objects // if (!aObject) return aObject; let bObject = Array.isArray(aObject) ? [] : {}; let value; for (const key in aObject) { // Prevent self-references to parent object // if (Object.is(aObject[key], aObject)) continue; value = aObject[key]; bObject[key] = (typeof value === "object") ? copy(value) : value; } return bObject; } 0 để sao chép một mảng?Bởi vì các mảng trong JS là các giá trị tham chiếu, vì vậy khi bạn cố gắng sao chép nó bằng 0, nó sẽ chỉ sao chép tham chiếu vào mảng gốc chứ không phải giá trị của mảng. Để tạo một bản sao thực của một mảng, bạn cần sao chép giá trị của mảng theo một biến giá trị mới. Bằng cách đó, mảng mới này không tham chiếu đến địa chỉ mảng cũ trong bộ nhớ.# Sự cố với các giá trị tham chiếuNếu bạn từng xử lý Redux hoặc bất kỳ khung quản lý nhà nước nào. Bạn sẽ biết tính bất biến là siêu quan trọng. Hãy để tôi giải thích ngắn gọn. Một đối tượng bất biến là một đối tượng nơi trạng thái không thể được sửa đổi sau khi nó được tạo. Vấn đề với JavaScript là 2 có thể thay đổi. Vì vậy, điều này có thể xảy ra:Đó là lý do tại sao chúng ta cần sao chép một mảng: # Có thể thay đổi so với các loại dữ liệu bất biếnMutable:
Immutable: Tất cả các nguyên thủy là bất biến.
# Chỉ bản sao nôngXin lưu ý 3 chỉ đi sâu một cấp khi sao chép một mảng. Vì vậy, nếu bạn đang cố gắng sao chép một mảng đa chiều, bạn sẽ phải sử dụng các lựa chọn thay thế khác.Đây là một điều thú vị tôi học được. Bản sao nông có nghĩa là cấp độ đầu tiên được sao chép, mức độ sâu hơn được tham chiếu.referenced. # function copy(aObject) { // Prevent undefined objects // if (!aObject) return aObject; let bObject = Array.isArray(aObject) ? [] : {}; let value; for (const key in aObject) { // Prevent self-references to parent object // if (Object.is(aObject[key], aObject)) continue; value = aObject[key]; bObject[key] = (typeof value === "object") ? copy(value) : value; } return bObject; } 4 là một cách khác để nhân bản mảng_Thanks: @hakankaraduman_
# Tài nguyên
Làm thế nào để bạn sao chép một mảng mà không có tài liệu tham khảo?Để tạo một bản sao thực của một mảng, bạn cần sao chép giá trị của mảng theo một biến giá trị mới. Bằng cách đó, mảng mới này không tham chiếu đến địa chỉ mảng cũ trong bộ nhớ.copy over the value of the array under a new value variable. That way this new array does not reference to the old array address in memory.
Làm thế nào để bạn sao chép một mảng trong JavaScript?Sử dụng Concat Phương pháp này là một cách phổ biến khác để sao chép một mảng trong JavaScript.Concat là một phương pháp rất hữu ích để hợp nhất hai điều khác nhau.Theo cách này, chúng tôi lấy một mảng trống và nối mảng ban đầu vào nó.Nó tạo ra một bản sao mới của mảng.
This method is another popular way to copy an array in Javascript. Concat is a very useful method to merge two iterable. In this way, we take an empty array and concatenate the original array into it. It creates a fresh copy of the array.
Làm thế nào để bạn sao chép một mảng mà không thay đổi mảng gốc?Để tạo bản sao hoặc bản sao của mảng, chúng ta có thể sử dụng toán tử lây lan hoặc phương thức splice.Các bước: Tạo bản sao của mảng bằng toán tử lây lan hoặc phương thức lát cắt.Áp dụng phương thức Splice trên mảng nhân bản và trả về mảng được trích xuất.use the spread operator or splice method. Steps : Create the clone of the array using the spread operator or slice method. apply the splice method on the cloned array and return the extracted array.
Làm cách nào để sao chép nội dung của một mảng?Methods:.. Lặp lại từng phần tử của mảng gốc đã cho và sao chép một phần tử tại một thời điểm .. Sử dụng phương thức Clone () .. Sử dụng phương thức ArrayCopy () .. Sử dụng phương thức copyof () của lớp mảng .. Sử dụng phương thức copyofrange () của lớp mảng .. |