gpt4 book ai didi

javascript - 如何传递值而不是数组的引用?

转载 作者:可可西里 更新时间:2023-11-01 02:16:55 25 4
gpt4 key购买 nike

我有这样的结构:

var a = [];
a.push({"level": 1, "column": 4, "parent": "none", "title": "Node 0", "content": "Parintele suprem", "show": "1"});
var b = a;

a.push({"level": 1, "column": 5, "parent": "none", "title": "Node 1", "content": "Parintele suprem", "show": "1"});

console.log(b);

现在的问题是 b 的内容与 a 完全相同(第二次推送后的内容)。这表明(如果我错了,请纠正我)当我说 b = a 时,我实际上给了 b 和 a 相同的引用,所以无论我在 a 中做什么,我都有b。问题是我需要传递值。所以我有预览 ab 中的值。

编辑以使问题更清楚:如何传递值而不是引用?

最佳答案

我认为您可以使用它来复制值而不是引用:

var b = a.slice(0);  

编辑
正如评论所提到的,这里也提到了:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice

slice 不会改变原始数组,但会返回一个新的“一层深度”副本,其中包含从原始数组中切片的元素的副本。原始数组的元素被复制到新数组中,如下所示:

  • 对于对象引用(而不是实际对象),切片副本对象引用到新数组中。原始数组和新数组引用同一个对象。如果引用的对象发生更改,则更改对新阵列和原始阵列均可见。

  • 对于字符串和数字(​​不是 String 和 Number 对象),切片副本字符串和数字到新数组中。更改字符串或一个数组中的数字不会影响另一个数组。

如果一个新元素被添加到任一数组,另一个数组不受影响。

关于javascript - 如何传递值而不是数组的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9190518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com