私はJavaScriptで同じ言葉を繰り返すことなく、ランダムに単語のパラグラフを再構築しようとしています:ブラウザ(JavaScriptの)
var para = 'dashing through the snow' +
' in a one horse open sleigh' +
' over the fields we go' +
' laughing all the way';
console.log(para);
function getRandomNumber(min, max)
{
return Math.floor(Math.random() * (max - min)) + min;
}
var words = para.split(' ');
var newPara = '';
for(var i = 0; i < words.length - 1; i++)
{
var curWord = words[getRandomNumber(0,words.length - 1)];
if(newPara.indexOf(curWord) == -1)
{
newPara += curWord + ' ';
console.log(newPara);
} else
{
i--;
}
}
コードは、単語の配列に段落を分割し(全部で19 )。私はループを使用してこの配列をループし、単語がnewPara文字列に追加されているかどうかを確認しながらランダムに単語を選択します。それがなければ、私はそれを追加します。もしあれば、私はループ実行から1を引きます。問題は、else文を使用してループから1つを減算すると、スクリプトによってブラウザがフリーズすることです。この問題の助けに感謝します。
私はこの編集を行ったコメントに基づいて:
if(newPara.length <= words.length)
{
if(newPara.indexOf(curWord) == -1)
{
newPara += curWord + ' ';
console.log(newPara);
} else
{
i--;
}
}
しかし、私はまだ同じエラーを取得しています。
配列の長さから1を引いてはいますが、配列自体のサイズは決して減らされません。無限です。 –
'elseの目的は何ですか? { i--; } '? – guest271314
'else {i--}'は、単語が既に新しい段落に存在する場合、ループ実行から1を引きます。あなたが言っていることを私が思うと思う。ここで意味することは: 'words [getRandomNumber(0、words.length - 1)];または' i - ; 'を意味する –