在 Java 中复制数组

本教程介绍了几种在 Java 中把一个数组复制到另一个数组的方法。我们可以使用手动的方法与循环来实现,但为了简单起见,我们不想重新发明轮子,还是不要使用这种方法。

在 Java 中使用 Arays.copyOf() 将一个数组复制到另一个数组

我们可以使用 Arrays 类的 copyOf() 方法,将指定的数组复制到一个新的数组中。copyOf() 需要两个参数,第一个是要复制的数组,第二个是新数组的长度。

在下面的例子中,我们将 array1 复制到 array2。新数组的长度等于 array1。如果新数组的大小大于旧数组的大小,那么每一个空的索引都将被填充为 0。我们用一个循环来打印新数组的项目和它们的索引。

import java.util.Arrays;
public class CopyArray {
    public static void main(String[] args) {
        int[] array1 = new int[]{2, 4, 6, 8, 10};
        int[] array2 = Arrays.copyOf(array1, array1.length);
        for (int i = 0; i < array2.length; i++) {
            System.out.println("array2 position " + i + ": " + array2[i]);
        }
    }
}

输出:

array2 position 0: 2
array2 position 1: 4
array2 position 2: 6
array2 position 3: 8
array2 position 4: 10

使用 Java 中的 System.arraycopy() 将一个数组复制到另一个数组

System.arraycopy() 在我们要用旧数组的子项目创建一个新数组时非常有用,因为它将旧数组的指定位置的数组项目复制到新数组的位置。

System.arraycopy() 至少需要四个参数,分别是要复制的数组 array1array1 的起始位置、新数组 array2array2 的起始位置、要复制到 array2 的元素。输出显示的是 array2 中的元素。

public class CopyArray {
    public static void main(String[] args) {
        String[] array1 = new String[]{"Adam", "Claire", "Dave", "Greg", "Halsey", "Jane", "Kylie"};
        String[] array2 = new String[array1.length];
        System.arraycopy(array1, 0, array2, 0, array1.length);
        for (int i = 0; i < array2.length; i++) {
            System.out.println("array2 position " + i + ": " + array2[i]);
        }
    }
}

输出:

array2 position 0: Adam
array2 position 1: Claire
array2 position 2: Dave
array2 position 3: Greg
array2 position 4: Halsey
array2 position 5: Jane
array2 position 6: Kylie

在 Java 中使用 clone() 将一个二维数组复制到另一个数组中

Java 中最后一个复制数组的方法是 clone(),它返回一个包含复制数组项的新数组。在这个例子中,我们使用一个有八个元素的二维数组 array1。我们使用 array1.clone() 来复制数组,并使用两个循环来打印新的数组 array2 元素。

public class CopyArray {
    public static void main(String[] args) {
        int[][] array1 = {{10, 20}, {30, 40}, {50, 60}, {70, 80}};
        int[][] array2 = array1.clone();
        for (int i = 0; i < array2.length; i++) {
            for (int j = 0; j < array2[i].length; j++) {
                System.out.println("array2 position [" + i + "][" + j + "] : " + array2[i][j]);
            }
        }
    }
}

输出:

array2 position [0][0] : 10
array2 position [0][1] : 20
array2 position [1][0] : 30
array2 position [1][1] : 40
array2 position [2][0] : 50
array2 position [2][1] : 60
array2 position [3][0] : 70
array2 position [3][1] : 80

在 JavaScript 中复制数组

在本文中,我们将学习如何将数组的元素复制到新的 JavaScript 数组中。

在 JavaScript 中,数组是包含所需键中的值的普通对象,可以是数字。

数组是具有固定数字键和动态值的 JavaScript 对象,在单个变量中包含任意数量的数据。数组是一维或多维的。

JavaScript 数组可以存储任何东西,例如直接值或存储 JavaScript 对象。与不同的语言相比,JavaScript 数组可以在相同数组的不同索引上保存不同的数据。

在 JavaScript 中使用 slice() 从数组中复制数组元素

slice() 方法是 JavaScript 提供的内置方法。此方法将数组拆分为两个位置。

通过采用两个输入(开始索引和结束索引)来执行此切割。基于此,该部分将在索引上返回一个数组。

如果只指定起始索引,则返回最后一个元素。使用 slice 而不是 splice 的优点是它不会用 splice 改变原始数组。

语法:

slice()
slice(start)
slice(start, end)

startend 索引处的任何元素(包括 end 之前的 start 和 stop 元素)都将插入到新数组中。结束索引是一个完全可选的参数。

你可以在 slice() 的文档中找到有关 slice 函数的更多信息。

const inputArray = ["Kiwi","Orange","Apple","Banana"];
const outputArray1 = inputArray.slice();
console.log(outputArray1);

当我们调用 slice() 时,所有元素都从原始数组复制,即 inputArrayoutputArray1。整个数组被复制,因为我们不传递开始或结束索引。

如果起始索引大于数组的长度,则返回空,空数组也将作为输出返回。有趣的部分是,如果你指定负索引,输入参数将被视为从序列末尾开始的更改。

一旦你在任何浏览器中运行上面的代码,它就会打印出类似这样的内容。

输出:

["Kiwi","Orange","Apple","Banana"]

在 JavaScript 中使用 Spread ... 运算符从数组中复制数组元素

spread (...) 语法允许扩展可迭代对象,例如,期望零个或多个参数(用于函数调用)或元素(用于数组字面量)的表达式或数组或扩展对象在需要零个或多个键值对的地方表达(对于对象文字)。

语法:

const newArray = [...oldArray];

当对象或数组的所有元素必须包含在某个列表中时,可以使用 spread 语法。

它通常用于将新项目添加到本地数据存储或查看所有已保存的项目和新增内容。此类操作的一个非常简单的版本可能如下所示。

const inputArray = ["Kiwi","Orange","Apple","Banana"];
const outputArray1 = [...inputArray, 'Grapes'];
console.log(outputArray1);

在上面的示例中,你可以尽可能多地执行最后一行,以将更多葡萄添加到数组的末尾。

输出:

["Kiwi","Orange","Apple","Banana"]
["Kiwi","Orange","Apple","Banana", "Grapes"]