Ao tentar selecionar uma palavra aleatória e sua descrição a partir de um objeto Javascript WORDS
, infelizmente é impresso um erro:
"use strict";
const WORDS = {
"one": "Word description 1",
"two": "Word description 2",
"three": "Word description 3",
"four": "",
"five": "Word description 5",
"six": "Word description 6",
"seven": "Word description 7"
};
function randomWord() {
// select all words with a description
const entries = Object.entries(WORDS)
.filter((word, description) => description && description.length > 2);
console.log(entries);
// a quicker way of doing parseInt(entries.length * Math.random(), 0)
const [word, description] = entries[entries.length * Math.random() << 0];
console.log(word + ': ' + description);
}
randomWord();
randomWord();
Aqui o mesmo código em um JsFiddle .
Usar uma combinação de Object.entries() e filter() não é a abordagem correta aqui?
Conforme os comentários mencionados, você tem um erro de sintaxe no seu filtro.
Aqui está uma versão funcional usando Fisher-Yates para embaralhar o array filtrado, após o qual você pode apenas obter entradas até que o array esteja vazio