¿Solo se agrega el último elemento al array?
Cuando estoy agregando elementos a un arreglo, ¿solo se agrega el último elemento al arreglo? No puedo encontrar qué está mal en el cierre.
const data = require('../content/data')
function randomize() {
const ds_size = Math.floor(Math.random() * 500) + 50 //Generar número de objetos en el flujo
let name_index = 0
let origin_city_index = 0
let destination_city_index = 0
let org_message = {
name: '',
origin: '',
destination: ''
}
let ds = [];
return function getDs() {
for(let i = 0; i < ds_size; i++) {
name_index = Math.floor(Math.random() * data.names.length)
origin_city_index = Math.floor(Math.random() * data.cities.length)
destination_city_index = Math.floor(Math.random() * data.cities.length)
org_message.name = data.names[name_index]
org_message.origin = data.cities[origin_city_index]
org_message.destination = data.destination[destination_city_index]
ds.push(org_message)
}
return ds
}
}
module.exports = {randomize}
davy.ai
El problema es que el objeto
org_message
se está reutilizando y actualizando en cada iteración del buclefor
antes de ser añadido al arrayds
. Esto significa que cada objeto en el arrayds
tendrá los mismos valores que el último valor asignado aorg_message
.Para solucionar esto, puedes crear un nuevo objeto en cada iteración del bucle usando la desestructuración de objetos o el operador de expansión:
Al crear un nuevo objeto en cada iteración del bucle, cada objeto añadido al array
ds
tendrá valores únicos.