Analysez ce code :
class BD {
constructor(db) {
this.db = db;
}
/**
* Finds items based on a query given as a JS object
*
* @param {object} query The query to match against (i.e. {name: 'paris'})
* @param {function} callback The callback to fire when the query has
* completed running
**/
find(query, callback) {
callback(
this.db.filter(function (city) {
for (const [key, value] of Object.entries(query)) {
if (city[key] !== value) {
return false;
}
}
return true;
})
);
}
}
// cities
const db = new BD([
{ name: "Vincennes", population: 40000 },
{ name: "Paris", population: 2161000 },
{ name: "roubais", population: 45000 },
]);
//console.log(s.db);
db.find({ population: 45000 }, function (cities) {
for (let city of cities) {
city["population"] = 50000;
}
});
db.find({ name: "Paris" }, function (cities) {
for (let city of cities) {
city["capital"] = true;
}
});
console.log(db);
db.find({ name: "Paris" }, function (cities) {
const updatedCities = cities.map((city) => ({ ...city, capital: true }));
console.log(updatedCities); // Only updated copies, db remains unchanged
});