Olá pessoal!
Ao invés de passar os parâmetros da instância de Negociacao no código abaixo (onde tem o comentário // dúvida) manualmente (dado._data, por ex), seria possível passá-los "automaticamente", ou seja, sem o programador precisar saber os nomes das propriedades do objeto?
listaTodos() {
return new Promise((resolve, reject) => {
let cursor = this._connection
.transaction([this._store],"readwrite")
.objectStore(this._store)
.openCursor();
let negociacoes = [];
cursor.onsuccess = e => {
let atual = e.target.result;
if(atual) {
let dado = atual.value;
negociacoes.push(new Negociacao(dado._data, dado._quantidade, dado._valor)); // dúvida
atual.continue();
} else {
resolve(negociacoes);
}
}
cursor.onerror = e => {
console.log(e.target.error);
reject('Não foi possível listar as negociações');
}
});
}
- Obs: pesquisando encontrei o Object.keys e Object.values, porém o array retornado pode conter as chaves/valores em ordem diferente da ordem original das propriedades do objeto.
Ex: considerando o objeto dado, que contém as propriedades _data, _quantidade e _valor, nesta ordem,
o Object.keys(dado), neste caso coincidentemente retornará um array = [_data, _quantidade, _valor]
(porque _data, _quantidade e _valor estão em ordem alfabética).
Porém, se as propriedades de dado estivessem na ordem _valor, _data, _quantidade, Object.keys(dado)
retornaria array = [_data, _quantidade, _valor], ou seja, diferente da ordem original!
- Nos arrays isso é possível com o spread operator:
let array = [1, 2, 3]; console.log(...array); // console: 1 2 3
Atenciosamente.