gpt4 book ai didi

Javascript对象数组 - 如何按值传递但保留名称?

转载 作者:行者123 更新时间:2023-12-02 15:48:56 25 4
gpt4 key购买 nike

我正在使用 javascript 进行编码,需要创建一个具有多个子对象的对象,这些子对象将保存相同的命名变量。当我尝试将值推送到一个子对象时,其他子对象也会得到它。我在浏览器控制台中模拟了如下行为:

object = {};
numbers = [0,1];
letters = ["a","b"]
fruits = ["peach", "pineapple"]


object.subObject1 = { numbers , letters , fruits };
object.subObject2 = { numbers , letters , fruits };

object.subObject1.numbers.push(3);
console.log(object.subObject2.numbers);

OUTPUT: [0, 1, 3]

所以,当我插入 array1 子对象时。它还转到 array2 子对象,因为显然数字数组是通过引用传递的。我的问题是,我该如何执行此操作,以便它们保留子对象数组属性名称(“数字”),但按值传递数组?

最佳答案

试试这个代码。

object.subObject1 = { numbers: numbers.slice(), letters: letters.slice(), fruits: fruits.slice() };
object.subObject2 = { numbers: numbers.slice(), letters: letters.slice(), fruits: fruits.slice() };

object.subObject1.numbers.push(3);
console.log(object.subObject2.numbers);

slice 显然会调用为基于前一个数组的对象创建一个新数组,而不仅仅是作为引用传递。

关于Javascript对象数组 - 如何按值传递但保留名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32002552/

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