Javascript 从同一数组中获取两个随机字

Javascript 从同一数组中获取两个随机字,javascript,arrays,Javascript,Arrays,我试图从同一数组中生成两个随机单词。现在这个脚本将选择一个单词,但当我尝试选择两个单词时,我遇到了一个问题。问题出在这里。用户可以从复选框中选择多种语言,因此当我将其设置为两个单词时,这两个单词使用不同的语言(它们来自不同的列表)。我想确保所选的两个词来自同一个列表。我该怎么做 function word(){ var choice = []; choice[0] = list0[Math.floor(Math.random()*list0.length)]; choice[1] = list1

我试图从同一数组中生成两个随机单词。现在这个脚本将选择一个单词,但当我尝试选择两个单词时,我遇到了一个问题。问题出在这里。用户可以从复选框中选择多种语言,因此当我将其设置为两个单词时,这两个单词使用不同的语言(它们来自不同的列表)。我想确保所选的两个词来自同一个列表。我该怎么做

function word(){
var choice = [];
choice[0] = list0[Math.floor(Math.random()*list0.length)];
choice[1] = list1[Math.floor(Math.random()*list1.length)];
choice[2] = list2[Math.floor(Math.random()*list2.length)];
choice[3] = list3[Math.floor(Math.random()*list3.length)];

var final_words = [];
var checkbox = document.getElementsByClassName('c');
for (var i = 0; i < checkbox.length; i++) {
    if (checkbox[i].checked) {
        final_words.push(choice[i]);
    }
}
var finalword = final_words[Math.floor(Math.random()*final_words.length)];
}
虚词(){
var选择=[];
选项[0]=list0[Math.floor(Math.random()*list0.length)];
选项[1]=list1[Math.floor(Math.random()*list1.length)];
选项[2]=list2[Math.floor(Math.random()*list2.length)];
选项[3]=list3[Math.floor(Math.random()*list3.length)];
var final_words=[];
var checkbox=document.getElementsByClassName('c');
对于(变量i=0;i
这就是你的意思吗

list0 = ['compare', 'power', 'random', 'raw', 'nothing', 'practice'];
list1 = ['Comparar', 'energía', 'azar', 'crudo', 'nada', 'práctica'];
list2 = ['comparer', 'puissance', 'aléatoire', 'saveur', 'brute'];
list3 = ['比 ', '较 ', '随 ', '机 ', '的 ', '电 ', '源 ', '没 ', '有 ', '生 ', '实 ', '践 '];

// used to match the lists with the id's of the checkboxes (lanugages)
available_words = {
    c1: list0,
    c2: list1,
    c3: list2,
    c4: list3
};

function pickRandom(arr) {
    return arr[Math.floor(Math.random() * arr.length)];
}

function getCheckedCheckboxes() {
    var checkboxes = document.getElementsByClassName('c');
    var checked_checkboxes = [];
    for (var i = 0; i < checkboxes.length; i++) {
        if (checkboxes[i].checked) {
            checked_checkboxes.push(checkboxes[i]);
        }
    }
    return checked_checkboxes;
}

function getRandomWords(lang_id, no_words) {
    words = [];
    for (var i = 0; i < no_words; i++) {
        do {
            rand_word = pickRandom(available_words[lang_id]);
        } while (words.indexOf(rand_word) >= 0);
        words.push(rand_word);
    }
    return words;
}

function word() {
    var words = [];
    var checked_checkboxes = getCheckedCheckboxes();
    if (checked_checkboxes.length != 0) {
        var rand_checkbox = pickRandom(checked_checkboxes);
        words = getRandomWords(rand_checkbox.id, 2);
    }
    document.getElementById('q').innerHTML = words.join(' ');
}
list0=['compare','power','random','raw','nothing','practice'];
列表1=['Comparr'、'energía'、'azar'、'crudo'、'nada'、'práctica'];
清单2=['comparer'、'puissance'、'aléatoire'、'saveur'、'brute'];
列表3=['比 ', '较 ', '随 ', '机 ', '的 ', '电 ', '源 ', '没 ', '有 ', '生 ', '实 ', '践 '];
//用于将列表与复选框(lanugages)的id匹配
可用词={
c1:list0,
c2:列表1,
c3:列表2,
c4:清单3
};
函数pickRandom(arr){
返回arr[Math.floor(Math.random()*arr.length)];
}
函数getCheckedCheckBox(){
var复选框=document.getElementsByClassName('c');
var复选框=[];
对于(变量i=0;i=0);
推(rand_-word);
}
返回单词;
}
虚词(){
var-words=[];
var checked_checkboxes=getCheckedCheckboxes();
如果(选中复选框。长度!=0){
var rand_checkbox=随机选取(选中复选框);
words=getRandomWords(rand_checkbox.id,2);
}
document.getElementById('q').innerHTML=words.join('');
}

当我们没有示例列表时,很难给出答案。设置一个演示,这样我们就不必猜测JSFIDLE或其他东西,因为书面选择[i]不存在。更改行final\u words.push(选项[i])到final\u words.push(随机列表[i]),并删除var choice=[];抱歉,,,写了这是火车上的急事。现在应该做这件事。p除非它使用所有列表,即使复选框未选中