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)配列を変更し、削除された要素を返します。これは、dico配列内でランダムに単語を受け取るため、 x<で意味をなす場合があります。dico.length

したがって、最初のエラーは、間違った変数を使用していることだけだと思います。

もう1つのエラーは、スプライスが要素だけでなく配列を返すことです。返された要素が必要な場合は、を取る必要があります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 に答える