In my loop I create a new variable and set a new value each time its looping(obviously)
But when the loop is done and outside my loop I console.log()
the array which is filled in the loop. Its logging every element with the value of the last element.
I've tried to use .push()
to fill the array.
state = {
dates: ['2019-02-04', '2019-02-05', '2019-02-06'],
entry: {
value1: undefined,
value2: undefined,
value3: {
value3_1: undefined,
value3_2: undefined
},
date: undefined
}
}
functionToFillArray() {
let entries = [],
entry = this.state.entry;
entry.value1 = 'value1';
entry.value2 = 'value2';
entry.value3 = {
value3_1: 'value3_1',
value3_2: 'value3_2'
};
this.state.dates.forEach((date, i) => {
entry.date = date;
entries.push(entry);
});
console.log(entries);
}
The output that I would expect is:
[
{
value1: 'value1',
value2: 'value2',
value3: {
value3_1: 'value3_1',
value3_2: 'value3_2'
},
date: '2019-02-04'
},
{
value1: 'value1',
value2: 'value2',
value3: {
value3_1: 'value3_1',
value3_2: 'value3_2'
},
date: '2019-02-05'
},
{
value1: 'value1',
value2: 'value2',
value3: {
value3_1: 'value3_1',
value3_2: 'value3_2'
},
date: '2019-02-06'
}
]
The value I get(Always the same date):
[
{
value1: 'value1',
value2: 'value2',
value3: {
value3_1: 'value3_1',
value3_2: 'value3_2'
},
date: '2019-02-06'
},
{
value1: 'value1',
value2: 'value2',
value3: {
value3_1: 'value3_1',
value3_2: 'value3_2'
},
date: '2019-02-06'
},
{
value1: 'value1',
value2: 'value2',
value3: {
value3_1: 'value3_1',
value3_2: 'value3_2'
},
date: '2019-02-06'
}
]