如何从课程中随机选择一个实例?

时间:2019-07-25 11:14:26

标签: javascript jquery class

我是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”之类的文件时,我什至似乎都无法访问每个属性。

1 个答案:

答案 0 :(得分:0)

您可以做的是:

  1. 将所有词汇存储在一个数组中
const vocabs = [ new Vocab(...), new Vocab(...), new Vocab(...)];
  1. 过滤所有词汇,以仅选择_hitCount小于2的词汇。
const availableVocabs = vocabs.filter((vocab) => vocab._hitCount < 2);
  1. 选择随机索引并返回包含该索引的词汇
const randomIndex = Math.floor((Math.random() * availableVocabs.length));
const selectedVocab  = availableVocabs[randomIndex];
相关问题