Javascript-通过引用传递变量问题
我试图复制一个javascript数组,并在不修改原始变量的情况下修改“副本”,有人能解释我做错了什么吗 e、 gJavascript-通过引用传递变量问题,javascript,operators,pass-by-reference,Javascript,Operators,Pass By Reference,我试图复制一个javascript数组,并在不修改原始变量的情况下修改“副本”,有人能解释我做错了什么吗 e、 g 我试图使array2仅包含数组中的一项&array1将包含数组中的两项。知道我做错了什么吗?为了创建数组的副本,而不是指定参考值,可以使用该方法 Slice将给定数组的(浅层)副本从给定索引返回到(可选的结束索引)使用Slice()复制数组 var array1 = [2, 5]; var array2 = ''; array2 = array1.slic
我试图使
array2
仅包含数组中的一项&array1
将包含数组中的两项。知道我做错了什么吗?为了创建数组的副本,而不是指定参考值,可以使用该方法
Slice将给定数组的(浅层)副本从给定索引返回到(可选的结束索引)使用Slice()
复制数组
var array1 = [2, 5];
var array2 = '';
array2 = array1.slice(0);
array2.pop();
console.log(array1);
console.log(array2);
slice不改变原始数组,但返回一个新的“一级”
“深度”副本,其中包含从
原始数组
更改行
array2=array1代码>至:
array2 = array1.slice(0);
Slice方法将给定数组的(浅层)副本从给定索引返回到(可选的结束索引)
我希望这会有所帮助。它与使用slice函数一样简单:
var array1 = [2, 5];
var array2 = '';
array2 = array1.slice();
array2.pop();
console.log(array1);
console.log(array2);
这里告诉javascript获取array1中元素的副本,并将结果分配给array2。如果不设置开始和结束位置,它将对整个阵列进行切片。编写此文件时
array2 = array1 //It creates reference on array1 object
array2.pop() // removes 5 from both end
因此您必须通过slice()方法将一个数组克隆到另一个数组---
array2 = array1.slice(0) // cloning array1 's element to array2
array2.pop() // removes 5 from only array2 not from array1
现在工作正常array2=array1.slice(1);-这似乎对我使用1而不是0有效,这是否仍然正确(很抱歉提出了noob问题):@Zabs你不必为提出问题而道歉:)这就是这个网站的目的。如果使用.slice(1)
它将返回数组1的一个切片,该切片不包含位置0处的元素。谢谢你+1说明:)array1
为参考array2
和array1
都是引用(指向对象的指针)。如果我写array2=array1,这意味着,array2-->array1-->[2,5],那么每当我们从array2弹出项,这意味着它从array1弹出项,这就是为什么从两个端点都弹出5。阵列2-->[2,5]
array2 = array1 //It creates reference on array1 object
array2.pop() // removes 5 from both end
array2 = array1.slice(0) // cloning array1 's element to array2
array2.pop() // removes 5 from only array2 not from array1