0

我正在尝试使用 ajax 将信息从我的文本文件加载到数组中,并且我正在使用以下代码:

function loadWords(){
    var xhr = new XMLHttpRequest();
    xhr.open('GET', "dico/francais.html");
    xhr.onreadystatechange = function(){
        if(xhr.readyState == xhr.DONE && xhr.status == 200){
            dico = xhr.responseText.split("\n");
            for(var i=0; i<wordsNBR; i++){
                var x = Math.floor(Math.random()*dico.length);
                words[i] = dico[x];
            }
        }
    }
    xhr.send(null);
}

它的话,但当我试图改变

for(var i=0; i<wordsNBR; i++){
                var x = Math.floor(Math.random()*dico.length);
                words[i] = dico[x];
            }

for(var i=0; i<wordsNBR; i++){
                var x = Math.floor(Math.random()*dico.length);
                words.push(dico.splice(x,1));
            }

它不起作用任何机构知道为什么?

4

1 回答 1

1

dico.splice(x,1)更改数组并返回删除的元素。x这可能对<有意义,dico.length因为它在 dico 数组中随机取一个单词。

所以我想你的第一个错误只是你使用了错误的变量。

另一个错误是splice返回一个数组而不仅仅是一个元素。如果你想要返回的元素,你需要采取dico.splice(x,1)[0].

做这个 :

var x = Math.floor(Math.random()*dico.length); // takes an index in what is left in dico
words.push(dico.splice(x,1)[0]); // removes the word and add it to words
于 2012-10-15T15:26:42.157 回答