簡體   English   中英

以隨機順序打印數組?

[英]Print array in random order?

我試圖以隨機順序輸出 4 個項目的 javascript 數組。 問題是,我只能隨機打印一個,如下所示:

序列:

健怡可樂

..但我希望它打印類似於以下內容的內容:

序列:

健怡可樂

偽可樂

無偽可樂

可樂零

..當然,以隨機順序。

<div id="test1"></div>
<div id="test1-drinks"></div>

<script>

    var contents=new Array()
    contents[0]='Coke Zero'
    contents[1]='Diet Coke'
    contents[2]='Psuedo Coke'
    contents[3]='None-psuedo Coke'


    var i=0
    var random
    var spacing="<br>"
    while (i<contents.length){
        random=Math.floor(Math.random()*contents.length)
        document.getElementById('test1').innerHTML = "Sequence:<br>";
        if (contents[random]!="selected"){
            document.getElementById('test1-drinks').innerHTML = contents[random]+spacing;
            //mark element as selected
            contents[random]="selected"
            i++
        }
    }

</script>

我希望 while 循環會為我覆蓋這些內容,但事實並非如此。感謝任何幫助,並且非常歡迎 php、jQuery 和 JavaScript 語言。

編輯:腳本來自此處,但我不希望使用 document.write 來修復它。

您可以使用隨機索引拼接數組,直到數組為空。

 var contents = ['Coke Zero', 'Diet Coke', 'Psuedo Coke', 'None-psuedo Coke']; while (contents.length) { document.write(contents.splice(Math.floor(Math.random() * contents.length), 1) + '<br>'); }

第 1 步:定義數組:

var contents=new Array()
    contents[0]='Coke Zero'
    contents[1]='Diet Coke'
    contents[2]='Psuedo Coke'
    contents[3]='None-psuedo Coke'

第 2 步:隨機排列數組:

contents.sort(function() {
  return .5 - Math.random();
});

第 3 步:打印值:

$.each(contents, function(index,value) {
    document.getElementById('test1-drinks').append(value + "<br/>");
});

你的問題

  1. 即使在與已選擇的值發生沖突后,您也將 1 添加到i ,因此您不會總是打印 4 次。
  2. 每次使用innerHTML =打印時都覆蓋數據。 您需要使用 append 允許舊的 html 留在那里。

我的錯。 調整:

document.getElementById('test1-drinks').innerHTML = contents[random]+spacing;

document.getElementById('test1-drinks').innerHTML += contents[random]+spacing;

所以我不會繼續替換隨機順序。

暫無
暫無

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

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