What happens is that you are changing the value of games
after each iteration. Instead of alter all the array, you must add a new object after each iteration.
Suppose the code below (what you currently do):
const items = [1, 2, 3, 4, 5]
let newItems = []
for (const item of items) {
const toAdd = item * 2
console.log('Alterando para', toAdd)
// Note abaixo que, por estarmos utilizando o operador de atribuição (`=`), substituimos,
// a cada iteração, o valor de `newItems`. Isso não é o que queremos.
newItems = [toAdd]
}
console.log(newItems)
So to solve this, we need to add the item of each iteration to the array. To do this, let’s use the method push
:
const items = [1, 2, 3, 4, 5]
const newItems = []
for (const item of items) {
const toAdd = item * 2
console.log('Adicionando', toAdd)
// Note abaixo que, ao invés de substituirmos todo o array `newItems` após
// cada iteração, estamos adicionando o valor do loop atual ao array existente.
// Para isso, estamos utilizando o `Array.prototype.push`:
newItems.push(toAdd)
}
console.log(newItems)
So in your example, you need to do the following:
// Precisamos inicializar `games` como um `array` vazio:
const games = []
execSQLQuery(query, form_values).then((dbResponse) => {
if (dbResponse != '') {
for (let i = 0; i < dbResponse.length; i++) {
// Abaixo estamos utilizando o método `push` para adicionar o objeto
// da iteração atual ao array `games`:
games.push({
name: dbResponse[i].nome_sg,
evaluation: dbResponse[i].heuristic_status,
cod_sg: dbResponse[i].cod_sg
})
}
}
})
perfect, Luiz, thank you very much! your explanation was sensational
– Mateus Binatti