[英]Javascript Shuffle Array from Text File
我希望從文本文件中提取5條“隨機”行,而不重復任何行。 文本文件中的每一行都有html代碼,這些代碼將插入到側面菜單中。 我已經閱讀了Fisher-Yates隨機播放的內容,但不確定如何將這種方式與javascript合並。 目前,我正在使用以下代碼從文件中提取單個1行:
var request = new XMLHttpRequest();
request.onload = function() {
// get the file contents
var fileContent = this.responseText;
// split into lines
var fileContentLines = fileContent.split( '\n' );
// get a random index (line number)
var randomLineIndex = Math.floor( Math.random() * fileContentLines.length );
// extract the value
var randomLine = fileContentLines[ randomLineIndex ];
// add the random line in a div
document.getElementById( 'random-testimonial' ).innerHTML = randomLine;
};
request.open( 'GET', 'content.txt', true );
request.send();
任何幫助表示贊賞!
您只需要重復request.onload()
的代碼五次,不是嗎? (除了附加到div html而不是設置它。)只需使用循環即可。 您不需要實施隨機播放:您正在使用的隨機(0..N-1)整數表達式是選擇隨機行所需的全部。
盡管您可能想防止重復。 也許在追加之前檢查子字符串是否匹配。
var request = new XMLHttpRequest();
request.onload = function() {
var i = 0;
// get the file contents
var fileContent = this.responseText;
// split into lines
var fileContentLines = fileContent.split( '\n' );
var target = document.getElementById( 'random-testimonial' );
var targetHTML = target.innerHTML;
while ( i < 5 ) {
// get a random index (line number)
var randomLineIndex = Math.floor( Math.random() * fileContentLines.length );
// extract the value
var randomLine = fileContentLines[ randomLineIndex ];
// add the random line in a div if not duplicate
if ( ! targetHTML.contains(randomLine) ) {
targetHTML += randomLine;
i += 1;
}
}
target.innerHTML = targetHTML;
};
request.open( 'GET', 'content.txt', true );
request.send();
你可以試試看 生成1和n之間的5個隨機數(其中
n = fileContentLines.length)
說n1,n2,n3,n4和n5。 然后將5行作為fileContentLines[n1]
,依此類推...使用此代碼段生成5個隨機數:
`var arr = []
while(arr.length < 5){
var randomnumber=Math.ceil(Math.random()*n)
var found=false;
for(var i=0;i<arr.length;i++){
if(arr[i]==randomnumber){found=true;break}
}
if(!found)arr[arr.length]=randomnumber;
}`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.