Làm thế nào để sao chép hoặc mở rộng một mảng?

Cập nhật lần cuối: 11/10/2023
Tác giả: Sebastian Vidal

Trong phát triển phần mềm, arrays hoặc mảng đại diện cho một phần thiết yếu của lập trình. Chúng là các cấu trúc dữ liệu cho phép chúng ta lưu trữ các tập hợp thông tin dưới cùng một tên, tạo điều kiện thuận lợi cho việc thao tác và truy cập dữ liệu. Bất kể kích thước và loại dữ liệu như thế nào, luôn có lúc các lập trình viên cần sao chép hoặc mở rộng một mảng. Trong bài viết sau, chúng tôi sẽ tập trung giải thích chi tiết cách thực hiện các thao tác này bằng các ngôn ngữ lập trình khác nhau.

Hiểu nhu cầu sao chép hoặc mở rộng một mảng

Trong lập trình, chúng ta thường gặp những tình huống cần sao chép hoặc mở rộng một mảng. Ví dụ: chúng ta có thể cần lưu một bản sao của một mảng để thực hiện các thao tác mà không làm thay đổi mảng ban đầu. Hoặc có lẽ mảng của chúng ta đã đầy và chúng ta cần tăng kích thước của nó để thêm nhiều phần tử hơn. Đối với những trường hợp này, thao tác sao chép hoặc mở rộng mảng là điều cần thiết. Chức năng này không chỉ dùng để sao chép hoặc tăng kích thước của mảng mà còn có thể giúp chúng ta giảm mức sử dụng bộ nhớ bằng cách chỉ lưu trữ những dữ liệu cần thiết.

Mặt khác, Nó đáng giá đề cập đến điều đó Mảng trong Java là đối tượng bất biến, nghĩa là khi một mảng đã được tạo thì kích thước của nó không thể thay đổi. Để "mở rộng" một mảng trong Java, chúng ta sẽ phải tạo một mảng mới lớn hơn và sau đó sao chép các phần tử của mảng ban đầu sang mảng mới. Việc này có thể hơi tẻ nhạt, nhưng có những phương thức được tích hợp sẵn trong thư viện chuẩn Java như System.arraycopy() y Arrays.copyOf() điều đó có thể tạo điều kiện thuận lợi quá trình này. Đối với các ngôn ngữ xử lý cấu trúc dữ liệu động, chẳng hạn như JavaScript hoặc Python, quy trình này đơn giản hơn nhiều và có các phương thức như push() y append() cho phép các phần tử được thêm vào một mảng hiện có mà không cần phải tạo một mảng mới.

Nội dung độc quyền - Bấm vào đây  Làm thế nào để sao chép một lớp trong Pixelmator?

Đi sâu vào các phương pháp sao chép mảng trong Javascript

Phương pháp phổ biến nhất để sao chép hoặc sao chép một mảng trong Javascript là sử dụng phương thức slice(). Phương thức này trả về một bản sao nông của mảng từ một mảng con được tạo giữa chỉ mục bắt đầu và kết thúc. Nó không sửa đổi mảng ban đầu và tách biệt hoàn toàn mảng được sao chép khỏi mảng ban đầu. Điều quan trọng cần lưu ý là khi sao chép các đối tượng trong một mảng, các tham chiếu sẽ được tạo cho các đối tượng ban đầu thay vì tạo các phiên bản mới. Điều này có nghĩa là nếu bạn sửa đổi đối tượng trong mảng được sao chép thì nó cũng sẽ được sửa đổi trong mảng ban đầu. Đây là một số mã để minh họa:


let arrayOriginal = ['a', 'b', 'c', 'd', 'e'];
let arrayCopia = arrayOriginal.slice();

Si lo que necesitas es mở rộng một mảng, JavaScript nó mang lại cho chúng ta một số cách để làm điều đó. Một phương pháp là sử dụng toán tử trải rộng. Toán tử này cho phép bạn mở rộng các phần tử có thể lặp lại trong mảng để tạo ra một mảng mới chứa các phần tử của mảng ban đầu và các phần tử bổ sung. Một phương thức khác là phương thức concat(), trả về một mảng mới là kết quả của việc nối mảng ban đầu với một hoặc nhiều mảng hoặc giá trị. Cuối cùng, bạn cũng có thể sử dụng phương thức push() để thêm một hoặc nhiều phần tử vào cuối mảng và trả về độ dài mới của mảng. Ở đây bạn có một số ví dụ:


let array1 = [1, 2, 3];
let array2 = [...array1, 4, 5, 6]; // array2 ahora es [1, 2, 3, 4, 5, 6]


let array3 = [1, 2, 3];
let array4 = array3.concat([4, 5, 6]); // array4 ahora es [1, 2, 3, 4, 5, 6]


let array5 = [1, 2, 3];
array5.push(4, 5, 6); // array5 ahora es [1, 2, 3, 4, 5, 6]

Mở rộng mảng: Các kỹ thuật được đề xuất và các tùy chọn khác

Mở rộng mảng là một nhiệm vụ phổ biến trong lập trình, đặc biệt khi lưu trữ và thao tác một lượng lớn dữ liệu. Tuy nhiên, nhiệm vụ có thể khó khăn nếu không biết đúng kỹ thuật. Ở đây, chúng ta sẽ thảo luận về một số kỹ thuật được đề xuất và các tùy chọn khác để mở rộng mảng. Trước hết, bạn có thể sử dụng chức năng Array.prototype.concat(). Hàm này kết hợp hai hoặc nhiều mảng trong một ma trận. Hơn nữa, nó không sửa đổi ma trận ban đầu, điều đó có nghĩa là tính toàn vẹn dữ liệu được bảo tồn. Dưới đây là ví dụ về cách sử dụng Array.prototype.concat():


let array1 = [1, 2, 3];
let array2 = [4, 5, 6];
let newArray = array1.concat(array2);

// newArray ahora es [1, 2, 3, 4, 5, 6]

Một lựa chọn khác là sử dụng kỹ thuật điều hành lây lan (…) . Toán tử này cho phép bạn lấy các phần tử từ một mảng và đặt chúng vào một mảng mới. Không giống như Array.prototype.concat(), toán tử trải rộng hoạt động tốt với mảng và đối tượng. Nó cũng có thể được sử dụng để sao chép một mảng. Dưới đây là một ví dụ về cách sử dụng toán tử trải rộng:


let array1 = [1, 2, 3];
let newArray = [...array1, 4, 5, 6];

// newArray ahora es [1, 2, 3, 4, 5, 6]

Cuối cùng, việc chọn sử dụng phương pháp nào sẽ phụ thuộc vào nhu cầu cụ thể của dự án của bạn. Tuy nhiên, cả Array.prototype.concat() và toán tử trải rộng đều là những kỹ thuật hiệu quả để mở rộng mảng.

Nội dung độc quyền - Bấm vào đây  ¿Por qué no puedo expandir la partición con EaseUS Partition Master?

Quản lý mảng hiệu quả: Ý nghĩa đối với hiệu suất mã

Khi xử lý mảng, một của cổ phần Phổ biến nhất là bản sao hoặc phần mở rộng của chúng. Tuy nhiên, điều cần thiết là phải biết cách thực hiện các thao tác này hiệu quả để đảm bảo hiệu suất mã tốt. Vì vậy, chúng tôi sẽ phân tích hai phương pháp chính: Array.prototype.slice() y Array.prototype.concat().

Khi cần sao chép một mảng, chúng ta có thể sử dụng hàm slice(). Phương pháp này cho phép chúng ta tạo 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. Để tạo một bản sao hoàn chỉnh của mảng, chúng ta chỉ cần sử dụng lát cắt mà không có bất kỳ đối số nào, như sau:

var gốc = [1, 2, 3, 4, 5]; var copy = original.slice();

Điều này sẽ cung cấp cho chúng ta một mảng “sao chép” mới có cùng giá trị với mảng “gốc”. Tuy nhiên, phải lưu ý rằng phương pháp này không hiệu quả nhất đối với các mảng lớn vì nó có thể dẫn đến việc sử dụng quá nhiều bộ nhớ và làm chậm mã.

Nội dung độc quyền - Bấm vào đây  Hướng dẫn cài đặt Free Fire trên PC

Về việc mở rộng mảng, chúng tôi khuyên bạn nên sử dụng hàm concat(). Phương thức này được sử dụng để hợp nhất hai hoặc nhiều mảng và trả về một mảng mới. Hãy tưởng tượng rằng chúng ta có hai mảng 'array1' và 'array2' mà chúng ta muốn nối. Vì vậy, chúng ta có thể sử dụng concat như sau:

var array1 = [1, 2, 3]; var array2 = [4, 5, 6]; var mở rộng = array1.concat(array2);

Điều này sẽ trả về một mảng “mở rộng” với các giá trị [1, 2, 3, 4, 5, 6]. Hãy chắc chắn ghi nhớ điều đó, trong khi concat rất tốt cho việc hợp nhất các mảng nhỏ, nó có thể tiêu tốn rất nhiều bộ nhớ khi xử lý các mảng lớn hơn.