Why the first example does not give me the expected result, but the second. They are basically the same. My expected console output of processedData2 should be
[
{
"id": "someid",
"parts": [
{
"part_id": "1"
}
]
},
{
"id": "someid",
"parts": [
{
"part_id": "2"
}
]
},
{
"id": "someid",
"parts": [
{
"part_id": "3"
}
]
}
]
like in the second example.
Example 1 (should work since "processedData" is the same as in the second example, but doesn't)
let putData = [
{
id: 'someid',
parts: [
{
part_id: '1',
},
{
part_id: '2',
},
{
part_id: '3',
},
],
},
];
let processedData = [];
for (let i of putData) {
for (let o in i.parts) {
processedData.push(i);
}
}
console.log('processed Data ', processedData);
let processedData2 = processedData;
console.log('processedData 2 before ', processedData2);
for (let i = 0; i < processedData.length; i++) {
console.log(processedData[i].parts[i]);
processedData2[i].parts = [processedData[i].parts[i]];
console.log(processedData2[i].parts[i]);
}
console.log('processedData 2 after', processedData2);
Second Example (works correct)
let processedData = [
{
id: 'someid',
parts: [
{
part_id: '1',
},
{
part_id: '2',
},
{
part_id: '3',
},
],
},
{
id: 'someid',
parts: [
{
part_id: '1',
},
{
part_id: '2',
},
{
part_id: '3',
},
],
},
{
id: 'someid',
parts: [
{
part_id: '1',
},
{
part_id: '2',
},
{
part_id: '3',
},
],
},
];
console.log('processed Data ', processedData);
let processedData2 = processedData;
console.log('processedData 2 before ', processedData2);
for (let i = 0; i < processedData.length; i++) {
console.log(processedData[i].parts[i]);
processedData2[i].parts = [processedData[i].parts[i]];
console.log(processedData2[i].parts[i]);
}
console.log('processedData 2 after', processedData2);
heres a link to a demo in Stackblitz: https://stackblitz.com/edit/js-8iqqp7?file=index.js