簡體   English   中英

如何從javascript中的數組中隨機選擇多個項目進行替換

[英]How to select randomly multiple items, with replacement, from an array in javascript

我有一個包含所有字母加上句號和空格的數組。 我想要做的是隨機選擇大量這些字母(如果多次選擇同一字母都沒關系),然后在屏幕上打印它們。 我到目前為止所獲得的是:

var letters = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", ".", " "];

for (var i = 0; i <= 10; i++) {
    var random_letter = Math.floor(Math.random() * 28);
    var result = [];
    result[i] = [letters[random_letter]];
    document.write(result);
}   

但是,當我在Firefox中運行腳本時,得到以下輸出:

X,C,,N,,,A,,,,T,,,,,.,,,,,,N,,,,,,,T,,,,,,,,G,,,,,,,,,O,,,,,,,,,,G 

正確包含10個字母和一個空格。 但是它也包含所有這些逗號! 這不是我的數組的一部分。 為什么這件事發生了? 難道我做錯了什么? 任何幫助將非常感激。 亞歷克斯

每次迭代循環時,您都在重新聲明result 如果您在外面聲明它應該可以解決問題

var letters = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L","M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", ".", " "]; 

var random = [];

for (var i=0; i < 50; i++)
{
    var index = Math.floor(Math.random() * 28);
    random.push(letters[index]);
}
console.log(random);

https://jsfiddle.net/77vtxxjh/

編輯

此外,您的代碼還聲明了一個數組數組而不是字符數組。 這就是導致所有逗號打印的原因。 如果您實際上就是這樣,則可以像這樣修改我的代碼:

 var letters = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L","M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", ".", " "]; var random = []; for (var j=0; j < 10; j++) { var temp = []; for (var i=0; i < 10; i++) { var index = Math.floor(Math.random() * 28); temp.push(letters[index]); } random.push(temp); } console.log(random); 

這是小提琴: https : //jsfiddle.net/s26tvtLx/1/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM