js数组复制到另一个数组(如何复制数组的一部分到另外一个数组)

本文目录
- 如何复制数组的一部分到另外一个数组
- 关于 js 数组拷贝的问题
- JavaScript中concat复制数组方法浅析
- 如何把js数组里面的引用转为另外一个数组 如arr[0]=arr1;
- js 怎样传递一个数组到另一个js
- js 数组克隆方法 小结
- JS数组克隆的几种方式
- JS如何将一个已知数组赋给一个新定义的数组
如何复制数组的一部分到另外一个数组
用Array.Copy方法将数组或者数组的一部分复制到另个数组。Array.Copy是静态方法,有多个重载版本。其中常用的是:
public static void Copy(
Array sourceArray,
int sourceIndex,
Array destinationArray,
int destinationIndex,
int length);
各个参数含义如下
sourceArray —— 源数组
sourceIndex —— 表示 sourceArray 中复制开始处的索引
destinationArray —— 目标数组,它接收数据
destinationIndex —— 表示 destinationArray 中存储开始处的索引
length —— 要复制的元素数目。
用法举例如下:
(1)复制数组的一部分到另一个数组
int src = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
int dest = new int;
// 将数组 src 中元素 2,3,4,5 复制到 dest
Array.Copy(src, 1, dest, 0, 4);
(2)复制整个数组
int src = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
int dest = new int[src.Length];
// 将数组 src 所有元素复制到 dest
Array.Copy(src, 0, dest, 0, src.Length);
关于 js 数组拷贝的问题
arry2[i] = tempArry;因为arry2[i]引用的是tempArry这个变量,当整个函数完全执行完的时候,tempArray变成了[5,6,7]了,所以输出的是[5,6,7],4,[5,6,7]。还有个问题:deepCopy1(arry1[i], tempArry)传入的tempArry参数,也就是再次调用deepCopy1时候把tempArry赋值给arry2,但你没有把arry2数组清空,这就会导致一个bug,如果你的d变成[[1,2,3],4,[5,6]]那么输出的结果会是[[5,6,3],4,[5,6,3]]
JavaScript中concat复制数组方法浅析
我们在需要进行数组复制的时候可能会想到以下的方法
代码
var
arr1
=
[1,2,3,4,5];
var
arr2
=
;
arr2
=
arr1;
console.log(arr1);
console.log(arr2);
执行结果如下:
[1,
2,
3,
4,
5]
[1,
2,
3,
4,
5]
在这个例子中,将数组arr1赋值给了另一个数组arr2。
查看执行结果,似乎复制了数组的内容并创建了相同的数组。
但是,由于数组是“引用类型”的数据,因此它不会复制该值,而只是共享存储该值的内存的位置。
因此,我们编写以下代码
arr2.push(6);
console.log(arr1);
console.log(arr2);
执行结果如下
[1,
2,
3,
4,
5,
6]
[1,
2,
3,
4,
5,
6]
根据以上结果可以发现即使我们只给arr2添加新值6,但是数组arr1中也会添加一个6,这就是因为两个
数组都只引用存储值的位置,如果更改任一数组中的数据,两者都会改变。
所以下面我们就来使用concat方法复制数组
我们来看具体示例
var
arr1
=
[1,2,3,4,5];
var
arr2
=
;
arr2
=
arr1.concat();
arr2.push(6);
console.log(arr1);
console.log(arr2);
执行结果如下
[1,
2,
3,
4,
5]
[1,
2,
3,
4,
5,
6]
要将另一个数组复制到数组arr2,只需要在复制源arr1中执行concat()即可。
您可能感兴趣的文章:js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解深入理解javascript中concat方法javascript使用
concat
方法对数组进行合并的方法JS
Array创建及concat()split()slice()的使用方法浅谈JavaScript的push(),pop(),concat()方法JavaScript模拟数组合并concatjs采用concat和sort将N个数组拼接起来的方法
如何把js数组里面的引用转为另外一个数组 如arr[0]=arr1;
数组的下标都是连续的,想要把一个数组的下标放到另一个数组中,只需要把这个数组的长度求出来就行了;
例如数组 int a={1,2,3}; 存储数组a下标的数组int b ={0,1,2};代码如下:
int a ={1,2,3};
int count = a.length;
int b = new int[count];
for(int i =0; i《count; i++)
{
b[i]=i;
}
js 怎样传递一个数组到另一个js
a.js
window.arr=[1,3,5];function fa(){
arr.push(7);
}
b.js
function fb(){for(var k in arr){
console.log(arr[k]);
}
}
在HTML中分别引入a.js,b.js,共享arr;另外,在同一个HTML/JSP文件中可通过隐藏域的方式共享参数;不同文件中可通过cookie保存;
js 数组克隆方法 小结
因此如果要创建一个与已经存在的对象内容相同的对象,不能通过简单的赋值操作。这样说的可能还是不太明白。
看下面的例子:
复制代码
代码如下:
var
a=[1,2,3,4];
var
b=a;c=b;
a.pop();
//移除最后一个元素
alert(b);
//弹出1,2,3
alert(c);
//弹出1,2,3
var
a=[1,2,3,4];
var
b=a;c=b;
a.pop();
//移除最后一个元素
alert(b);
//弹出1,2,3
alert(c);
//弹出1,2,3
我们执行上面的代码发现,在a的内容做改变后,变量b和c的结果也改变了。
上面的情况也许不是我们所需要的,我们希望的是创建一个与原对象内容一样的“新”对象。这样我们就需要通过一些克隆的办法来实现。
JS里Array也是一种Object。这里我们主要总结一下Array的克隆方式,我们这里为Array原生对象扩展一个clone方法。
1、最简单的办法,就是创建一个新数组,并遍历数组逐项添加到新数组中。
复制代码
代码如下:
Array.prototype.clone=function(){
var
a=;
for(var
i=0,l=this.length;i《l;i++)
a.push(this[i]);
return
a;
}
Array.prototype.clone=function(){
var
a=;
for(var
i=0,l=this.length;i《l;i++)
a.push(this[i]);
return
a;
}
这种实现方式是最容易想到也是最容易理解的,但是代码有点复杂了,我们仔细研究Array的一些方法,其实还有一个很简单的办法。下面说一下其它的两种办法。
2、通过Array对象的slice方法。
slice方法是通过参数start和end的传入值来返回数组中的一段,该方法不对原数组进行操作。我们通过slice(0)可以使其返回所有项。
复制代码
代码如下:
Array.prototype.clone=function(){
return
this.slice(0);
}
Array.prototype.clone=function(){
return
this.slice(0);
}
3、通过Array对象的concat方法。
concat方法是用来实现数组的合并的。通过和一个空函数的合并,即可实现我们的克隆功能。
复制代码
代码如下:
Array.prototype.clone=function(){
return
.concat(this);
}
//或者
Array.prototype.clone=function(){
return
this.concat();
}
Array.prototype.clone=function(){
return
.concat(this);
}
//或者
Array.prototype.clone=function(){
return
this.concat();
}
如果发挥想象应该还有其它的办法,以上只是本人想到的两种方法。
JavaScript
克隆数组最简单的方法
JavaScript数组的快速克隆(slice()函数)和数组的排序、乱序和搜索(sort()函数)
JS数组克隆的几种方式
最简单的就是for循环了:参考网页-网页链接
for循环是非常好用的。如果不知道高级方法,通过for循环能够完成我们大多数的需求。
var arr = [1,2,3,4,5]var arr2 = copyArr(arr)function copyArr(arr) {
let res = for (let i = 0; i 《 arr.length; i++) {
res.push(arr[i])
} return res
}123456789
如上,通过对数组的for循环,即可实现对数组的深拷贝了。
JS如何将一个已知数组赋给一个新定义的数组
将小数组的值循环赋值给大数组,如果大数组未满,继续循环赋值。或者直接一个循环(大数组的长度作为循环限制)赋值到小数组完,重置小数组的index为0,直到大数组全部赋值完。
【相关拓展】
第一种用for循环:
int x={1,2};
int y=new int;
for(int i=0;i《x.length;i++){
y[i]=x[i];
第二种用java提供的arraycopy
int x={1,2};
int y=new int;
System.arraycopy(x, 0, y, 0, x.length);//变量依次是(原数组,从原数组第几位开始,目标数组,从第几位开始粘贴,复制长度)

更多文章:
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026年10月11日 08:50
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00






