如何在不改变原始数组的情况下拼接数组?
在本文中,我们将从数组中提取元素范围而不对其进行变异。这里,mutation 是指改变原始数组。有一个内置函数用于从数组中提取元素,但它会改变数组。
.splice() 方法的工作原理: splice 方法用于从数组中提取元素范围。它需要三个参数index ,要删除的项目数,要附加的项目数组。 索引(第一个参数)是必需的,其余参数是可选的。此方法在删除项目后返回一个新数组,但它也会改变原始数组。下面的例子解释了它是如何改变原始的。
Javascript
Javascript
Javascript
Javascript
输出:
Extracted Array
["c", "cpp", "java"]
Original Array
["python", "javascript", "kotlin"]
在这里你可以看到原始数组被 splice 方法改变了。我们将实现与 splice 方法提供的功能相同的功能,但不会改变原始数组。在这里,我们将讨论实现此功能的两种方法,第一种是使用数组的副本,第二种方法是使用过滤器方法。
方法一:使用数组的副本。在这种方法中,我们将创建原始数组的副本,然后使用拼接方法提取项目。要创建数组的副本或克隆,我们可以使用扩展运算符或拼接方法。
脚步 :
- 使用扩展运算符或切片方法创建数组的克隆。
- 对克隆的数组应用拼接方法并返回提取的数组
例子:
Javascript
输出:这里原始数组没有发生突变。但是在更大的数组中应用这种方法并不是一个好习惯,因为当我们创建数组的克隆时,它的空间消耗会增加。
Extracted Array
["c", "cpp", "java", "python"]
Original Array
["c", "cpp", "java", "python", "javascript", "kotlin"]
方法2:使用过滤方法。在这种方法中,我们使用过滤器方法。 filter 方法用于在对其应用一些条件后过滤掉数组的元素。此方法不会改变数组。
句法 :
Array.filter((item, index)=>{ return index >= start
&& index < howMany + start })
示例 1:
Javascript
示例 2:原型形式。
Javascript
输出:
Extracted Array
["cpp", "java", "python"]
Original Array
["c", "cpp", "java", "python", "javascript", "kotlin"]