簡體   English   中英

如何在此javascript中獲取多個隨機不同的項目

[英]How to get more than one random different item in this javascript

我有這段代碼 ,可以使用getJSON拾取隨機文本鏈接。 它一次拾取一個隨機項。 我想知道如何拿起一個以上的不同物品,並在#randomkeyword顯示它們。 我所能想到的就是兩次設置腳本,但是我認為它可能有機會選擇相同的項目,有什么辦法嗎?

jQuery.getJSON('random.json', function(data) { //Ajax call

var item = data.link[Math.floor(Math.random()*data.link.length)]; 

jQuery('<a title="' + item.des + '" href="http://' + item.url + '">'+ item.title +'</a>').appendTo

('#randomkeyword');

});

JSON檔案:

{"link":[{"title":"XXXX","url":"google.com","des":"light"},{"title":"CCCCCCC","url":"yahoo.com","des":"dark"},{"title":"DDDDDDDD","url":"song.com","des":"light"},{"title":"CCCCCCCCCCCCCCC","url":"googlemap.com","des":"normal"},{"title":"RRRRRRRRRRRRRRR","url":"fun.com","des":"halo"}]}

為了避免重復,您可以“隨機播放”列表,然后從頭開始遍歷。

您可以檢查第二項是否與第一項相同。 如果是這樣,您可以選擇其他隨機項目。

jQuery.getJSON('random.json', function(data) { //Ajax call

var item = data.link[Math.floor(Math.random()*data.link.length)];
var item2=item;//set second item same as first item to access the while loop

while(item==item2){
   item2 = data.link[Math.floor(Math.random()*data.link.length)];
}

jQuery('<a title="' + item.des + '" href="http://' + item.url + '">'+ item.title +'</a>').appendTo

('#randomkeyword');

});
//do the same for item2

因此,我認為您可以存儲列表,然后根據需要進行多次遍歷,在運行時splice出選定的列表(以避免重復),然后在結果數組中的每個元素上運行jQuery。 請注意,這確實會修改返回的數組,因此,如果需要原樣,請首先對其進行復制。

例如:

var data = ['one', 'two', 'three'];
var numOfLinks = 2;
var result = [];
for(i = 0; i < numOfLinks; i++) {
    var index = Math.floor(Math.random()*data.length);
    var link = data[index];
    data.splice(index,1);
    result.push(link);
}
// iterate over result, doing your jQuery function over each element

暫無
暫無

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

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