2

在我的一个项目中,我必须将一个数组的值复制到另一个数组。

当我尝试这样做时:

 var Arr1 = new Array(1,2,3,4,5,6,7,8,9,10);
 var Arr2 = Arr1;        // will this create a pointer ??

它是在创建一个指针吗?

小提琴:我的意思是在循环之后,如果我尝试访问 Arr1,它会返回空。

for(var i=0;i<Counter;i++)
{
    $('#testDiv').append(Arr2.pop() + " ");
}       
    alert("The element in other array : "  + Arr1);

javascript中有类似指针的东西吗?

4

5 回答 5

3

JavaScript 中的赋值确实创建了对右侧的引用。

指针是一种引用类型,但还具有以下两个属性:

  • 它指的是特定的内存地址。
  • 可以对其进行加减运算以得到其他同样有效的内存地址。

这两个条件在纯 JavaScript 中都不能满足,尽管实现肯定可以为这些条件提供本机函数。

于 2013-05-23T10:41:55.020 回答
2

尝试:

var Arr2 = Arr1.slice(0);

从这里:http ://davidwalsh.name/javascript-clone-array

于 2013-05-23T10:39:53.090 回答
2

您可以尝试使用Arr1.slice(0)

http://jsfiddle.net/L23nR/

于 2013-05-23T10:41:02.373 回答
1

代替

var Arr2 = Arr1; 

var Arr2 = Arr1.slice();

在这里检查:http: //jsfiddle.net/dk7E6/

var Arr2 = Arr1;

这会创建一个数组引用,Arr1 因此如果您修改Arr2,那么Arr1将自动更改..所以要获取数组的副本,请使用array.slice()

于 2013-05-23T10:40:05.127 回答
1

本质上,是的。JavaScript 中的值是引用,因此变量Arr1Arr2都引用内存中的同一个数组实例。所有值都在赋值时通过引用复制,因此在 JavaScript 中一切都是“指针”。

于 2013-05-23T10:41:55.457 回答