+Array.prototype.shuffle = function () {
+ for (let i = this.length - 1; i > 0; i--) {
+ const j = Math.floor(Math.random() * (i + 1)); // random index 0..i
+ [this[i], this[j]] = [this[j], this[i]]; // swap elements
+ }
+ return this;
+};
+
class WordQuiz {
dataselect(json) {
+ // find viable rows from json data
let rows = Object.values(json);
- return rows.sort(() => {return .5 - Math.random()}) // shuffle
+ if (this.preset.level !== undefined) {
+ rows = rows.filter(row => row[1] <= this.preset.level);
+ }
+ return rows.shuffle();
}
load(dataurl) {
+ this.preset = {};
fetch(dataurl).then(res => res.json()).then(json => {
this.words = this.dataselect(json)
this.setup();