gpt4 book ai didi

javascript - 根据数组长度多次复制对象 - Angular 2+/JavaScript

转载 作者:行者123 更新时间:2023-11-30 11:20:47 25 4
gpt4 key购买 nike

我有一个空值对象。我需要复制这个对象,但是我的一个数组的长度是它的很多倍。那么我将有两个具有相同属性但具有不同值的对象。

TS

add = [
{
type: 'Package',
value: ''
}
]

this.form.value.packages = [1,2,3]

//This should duplicate the object based on length of packages

let packageDup = Array(this.form.value.packages.length).fill(this.add[0])

packageDup.forEach((res, i) => {

packageDup[i].value = this.form.value.packages[i]

})

此方法的问题在于值最终相同。例如,两个对象的值都等于 2。我觉得我想多了。谢谢。

我想要的结果---

add = [
{
type: 'Package',
value: '1'
},
{
type: 'Package',
value: '2'
},
{
type: 'Package',
value: '3'
}
]

最佳答案

要创建对象“obj”的副本,我通常使用 Object.assign({}, obj)

你可以使用这样的东西:

let packageDup = Array(this.form.value.packages.length)
.fill(0) // needed to have some value and no empty value that would cause map to fail.
.map(x => Object.assign({}, this.add[0]);

(正如 Daniel W Strimpel 在他的回答中提到的那样,请注意它只执行浅拷贝,如果您有嵌套对象,您应该记住这一点。)

let baseObject = { value: 1 }

let array = Array(3).fill(0).map(x => Object.assign({}, baseObject));

console.log(array);

array[1].value = 2;
array[2].value = 3;

console.log(array);

关于javascript - 根据数组长度多次复制对象 - Angular 2+/JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49930408/

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