我是JS的初学者,我正在尝试创建一个随机选择器,该选择器可以从英语课程的单词列表中选出一个单词。我创建了一个新类,其中包含所有格式信息(名称,图像,背景色,边框色),供您单击按钮以生成随机单词时使用。我想访问一个特定的实例(暂时对其进行了硬编码,但是我希望在我了解更多信息时可以作为用户输入),然后将每个属性应用于相应的CSS代码以更改屏幕上的图像,并在每次之后单击它应该注册是否已经选择了一个单词,并在两次选择后停止选择它。从本质上讲,我不确定如何解决这个问题。创建类实例后,是否可以对其进行迭代?
我能够使它与可以迭代并从中进行绘制的一系列对象一起工作,但是一旦它击中了很多次,我就无法停止它。我试过将值推到一个新数组,然后比较两个数组,但这似乎不起作用。我在想,我可以只增加一个类中的hitCount属性,并阻止它选择已经位于2的属性。
class Vocab {
constructer(name, image, bgcolor, bordercolor) {
this._name = name;
this._image = image;
this._bgcolor = bgcolor;
this._bordercolor = bordercolor;
this._hitCount = 0;
}
get name() {
return this._name;
}
get image() {
return this._image;
}
get bgcolor() {
return this._bgcolor;
}
get bordercolor() {
return this._bordercolor;
}
incrementHitCount() {
this._hitCount++;
}
}
const running = new Vocab('running', '<img class="verb-pics" src="./images/running.png">', '#fc4e4e', '#9c3333');
我也曾尝试将Vocab用作对象数组,并且可以获得属性,但仍不确定在选择每个实例后如何停止它们。这样,使用“ running.name”之类的文件时,我什至似乎都无法访问每个属性。
答案 0 :(得分:0)
您可以做的是:
const vocabs = [ new Vocab(...), new Vocab(...), new Vocab(...)];
_hitCount
小于2的词汇。const availableVocabs = vocabs.filter((vocab) => vocab._hitCount < 2);
const randomIndex = Math.floor((Math.random() * availableVocabs.length));
const selectedVocab = availableVocabs[randomIndex];