当尝试从 Javascript 对象中选择随机单词及其描述时WORDS
,不幸的是打印了一个错误:
"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();
这里是JsFiddle中的相同代码。
使用Object.entries()和filter()的组合不是正确的方法吗?
正如评论中提到的,您的过滤器中存在语法错误。
这是一个使用Fisher-Yates来打乱过滤后的数组的工作版本,之后您可以获取条目,直到数组为空