Javascript数组一起改变
javascript arrays change together
创建第二个数组=第一个数组,然后对第二个数组执行'shift',第一个数组也受到影响。参见下面的代码。我希望第二个数组在转换后包含Larry和Moe,而第一个数组具有原始的三个元素。转换之后,两个数组都只有Larry和Moe作为元素?
var firstArray = ["Curly", "Larry", "Moe"]
var secondArray = firstArray;
var thirdArray = firstArray;
alert("This is first array " + firstArray + "<br>");
secondArray.shift();
alert("This is first array " + firstArray + "<br>");
alert("This is second array " + secondArray + "<br>");
alert("This is third array " + thirdArray + "<br>");
这里secondArray
&thirdArray
指与firstArray
相同的阵列,而不是一个新的独立阵列。
可以使用slice返回数组
部分的浅拷贝。var firstArray = ["Curly", "Larry", "Moe"]
var secondArray = firstArray.slice();
var thirdArray = firstArray.slice();
alert("This is first array " + firstArray + "<br>");
secondArray.shift();
alert("This is first array " + firstArray + "<br>");
alert("This is second array " + secondArray + "<br>");
alert("This is third array " + thirdArray + "<br>");
这样做的原因是数组是引用类型。有两种类型的变量
- 值类型实际值存储在变量中。ex - string, number, boolean, null, undefined
-
引用类型值将存储在不同的位置(in Heap),对该值的引用将存储在变量中。对象、数组和函数都是引用类型。
var secondArray = firststarray;
firststarray存储先前声明的数组的引用当您运行上面的代码时,它将firstArray的引用复制到secondArray变量。运行以上行后,secondArray也有firststarray的引用。当你运行
secondArray.shift();
将从所有三个变量引用的数组中删除第一个值。请阅读以下链接了解更多详情
基本值与参考值
http://docstore.mik.ua/orelly/webprog/jscript/ch04_04.htm
可以使用slice方法获取数组的副本,如下所示,
var secondArray = firstArray.slice();
其他方法请参考下面的链接
复制数组
相关文章:
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 转义符不能与innerHTML一起使用
- 高亮显示与数组字符串一起使用时文本插件中断
- setTimeout可以与闭包内的函数一起使用吗
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- Highcharts colorsByPoint与系列中的线性渐变一起使用时不起作用
- jQuery:当屏幕大小改变时,如何更改默认图像和悬停图像
- 如何将js库与typescript一起使用
- 将webpack和babel与父项目目录中的文件一起使用
- 为什么使用immutableJS我的状态没有改变
- 将 Drag&Drop 与 jsTree 和 DataTables 一起使用
- Javascript-如何让脚本与Ajax请求的数据一起运行
- JavaScript改变了双方的显示风格
- 将两个ext.TabPanels滚动到一起
- 将jQuery UI Timepicker Addon与React一起使用
- 如何使JQuery同位素与改变高度的元素一起工作
- 改变setInterval的间隔和所有动画一起运行
- Javascript数组一起改变
- Chrome: className属性改变不与GWT一起工作
- 改变了URL的UserInput不能与多个菜单一起工作