I have an object with empty values. I need to duplicate this object however many times the length of one of my arrays is. So then I would have two objects with the same properties but with different values.
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]
})
The issue with this method is that the values end up being the same. For instance, both object's value would be equal to 2. I feel like I'm overthinking this one. Thanks.
What I would like as a result ---
add = [
        {
          type: 'Package',
          value: '1'
        },
        {
          type: 'Package',
          value: '2'
        }, 
        {
          type: 'Package',
          value: '3'
        }
    ]
                To create a copy of the object 'obj', I usually use Object.assign({}, obj)
you could use something like this :
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]);
(as Daniel W Strimpel mentionned in his answer, be aware that it performs only a shallow copy, in case you have nested objects you should keep that in mind.)
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With