![](/img/trans.png)
[英]How to generate more than one unique random number, using 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.