【问题标题】:Javascript: reference an array with a variable, instead of duplicating itJavascript:使用变量引用数组,而不是复制它
【发布时间】:2013-04-17 13:30:21
【问题描述】:

假设我有两个 javascript 数组,如下所示:

arrA = [1,2,3]
arrB = [4,5,6]

有没有办法可以用不同的变量名来引用它们呢?如果我这样做:

arrC = arrA
arrD = arrB

复制初始数组,而不是对它们进行指针/引用。所以,如果我弄乱了arrC 的值,arrA 就不会更新。有没有办法解决这个问题?

谢谢。

【问题讨论】:

  • 您需要提供一个代码示例来展示您的场景,因为arrC = arrA 只是对同一个数组进行了新的引用。
  • 我在 firebug 中使用了以下代码:'arrA = [1, 2, 3]; arrC = arrA; arrC[2] = 9;控制台日志(arrA)'。它表明 arrA 已更新。
  • 是的,看起来我在代码的其他地方重新分配了变量名。感谢您的帮助 - 我会尽快接受答案。

标签: javascript arrays pointers reference


【解决方案1】:

不,它不会复制。如果你更改arrC,它也会更改arrA

试试这个:

var arrA = [1,2,3];
var arrC = arrA;
arrC.push(26);
console.log(arrA);

您会在控制台中看到[1, 2, 3, 26]

反之亦然:如果您想要制作副本,则必须明确地进行,例如使用

var arrC = arrA.slice();

【讨论】:

  • 如果您确实想要复制,请使用var copy = arr.splice();
  • 什么意思?这与您刚刚编辑答案以包含的内容相同:)
  • 我之前编辑过,但我主要指的是 splice(带 p)不会返回副本。
【解决方案2】:

按照这篇文章并在对象中创建一个数组,这是一种简单的方法。

javascript variable reference/alias

【讨论】:

  • 1) 不要只链接到另一个问题,而是在评论中这样做,以便有人可以将其标记为重复。 2)我不明白它是如何相关的。 3)尝试获得一些代表,以便您可以发表评论而不是写出不是答案的答案。 4)欢迎SO :)
猜你喜欢
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-23
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
  • 1970-01-01
相关资源
最近更新 更多