简单的Javascript数组问题
Simplistic Javascript array issue
var a = [], b = [];
a.push('a');
a.push('b');
a.push('c');
b = a;
b.push('d');
console.log(a);
为什么 a = ["a", ">b", "c", "d"] ?,做 b=a 时如何避免这种交叉引用;我只想有 2 个单独的对象,独立
最后
当你将 a 分配给 b 时,你实际上是在分配对 a 的引用。因此,对 b 所做的任何更改也会影响 a。要做你真正想做的事情,请尝试:
b = [].concat(a);
这将制作 A 的实际副本。
在 JS 数组中也是对象(Array
对象的实例(,因此 JS 中的此类对象是通过引用而不是按值分配的,所以当你这样做时:
b = a
b
现在通过引用分配给a
,因此它会影响a
数组。
要做你想做的事情,你可以做:
b = a.slice();
下面是一个示例:
var a = [], b = [];
a.push('a');
a.push('b');
a.push('c');
b = a.slice();
b.push('d');
console.log(a);
结果:
[a, b, c]
因为变量引用对象,所以它们不会复制它们。
您可以使用
var a = [], b = [];
a.push('a');
a.push('b');
a.push('c');
b = a.slice();
b.push('d');
console.log(a);
因为赋值不会复制变量内容。(请参阅相关的 这是 NodeJS 中的变量范围错误还是我只需要更多睡眠问题。
对于数组,您可以使用 concat
创建一个(浅(复制的数组:
a = [1,2,3]
b = [].concat(a)
b.push(4)
。或者slice
正如其他答案所说。
一旦你做了b = a
a
和b
都指向内存中的同一个数组;你需要将元素分别推送到a
和b
,或者一旦你把元素推送到a
你可以循环它并将其推送到b
,例如
for ( var i = 0; i < a.length; i++ ){ b.push( a[i] ); }
相关文章:
- 将子文档推送到父数组时遇到问题
- 从数组在d3中创建条形图时出现问题
- JavaScript/jQuery JSON数组问题-值为未定义
- JavaScript变量引用数组时出现问题
- Javascript中的多维数组排序索引问题
- JavaScript对象中存在数组的问题
- array_push平面数组问题-需要能够向数组中添加多个变量
- 多维数组 JAVASCRIPT 出了点问题
- javascript中的数组和if语句存在问题
- JavaScript的循环问题,将值插入数组将不起作用
- Javascript数组比较问题
- 设置和添加数组值javascript时出现问题
- 数组有什么问题
- 在Javascript/Google Maps Api中将结果放入数组时出现问题
- 尽管使用了off,click函数仍会触发,这可能也会导致数组问题
- azure移动服务中的数组长度问题
- 将数组从PHP传递到Javascript(Jquery)的问题,如常见答案所示
- 填充对象的Javascript数组时出现问题
- JavaScript——迭代一系列问题(数组/对象)
- 表单显示问题+数组下的结果