I got 31 json files in 'pl' folder, named 'objects_p=1', 'objects_p=2' etc. Each contains 50 values, except the last (24 values). Trying to fetch all data into one object:
let sourceObj={};
for (let i=1;i<32;i++){
fetch(`pl/objects_p=${i}`)
.then((response) => response.json())
.then((data) => {
let new_obj = Object.assign(sourceObj,data);
sourceObj = new_obj
});
}
So basically, I try to append data to newObj in loop. But when console.logging sourceObj, i got only last 24 values instead expected 1524. Where's the mistake?
Object.assign simply replace the values if the attributes already exist. It does only work with different values Mozilla doc
From the link :
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnedTarget = Object.assign(target, source);
console.log(target);
// Expected output: Object { a: 1, b: 4, c: 5 }
console.log(returnedTarget === target);
// Expected output: true
Object can not have duplicated properties, you can maybe simply use an array to store all of your objects
let sourceObj={};
let allSources=[sourceObj].
for (let i=1;i<32;i++){
fetch(`pl/objects_p=${i}`)
.then((response) => response.json())
.then((data) => {
allSources.push(data)
});
}