javascript 隨機顯示指定內容

今天碰到一個需求,一個頁面顯示贊助廠商的信息,可是廠商要求排序要隨機排,由於是個靜態頁面不是讀取數據庫的,因此打算用js來控制數據庫

 var arr = new Array('張三', '李四', '王五', '趙六', '田七', '哈哈', '呵呵', '麼麼');  
var brr = new Array(); var len1 = arr.length; var str = ""; //debugger; while (brr.length <= 8) { var index = parseInt(Math.random() * (len1)); for (var j = 0; j < brr.length; j++) { if (brr.indexOf(arr[index])==-1) { brr.push(arr[index]); //if (arr[index] != undefined) { str += arr[index] + "、"; //} arr.splice(index, 1); } } if (brr.length==0) { brr.push(arr[index]); //if (arr[index] != undefined) { str += arr[index] + "、"; //} arr.splice(index, 1); } } console.log(str)

嘴笨不知道怎麼描述思路,我就把幾個版本都放上來,你們慢慢看應該是能夠看明白的數組

   while (brr.length <= arr.length)
    {
        var index = parseInt(Math.random() * (len1));
        if (brr.length==0) {
            brr.push(arr[index]);//第一次添加
        }
           
        if (arr[index] != undefined) {  //由於加一個後會去掉數據源的一個選項,因此有時候會有索引沒值
            brr.push(arr[index]);
                str += arr[index] + "、";
                arr.splice(index, 1);
            }
    }

這樣就能夠實現不重複隨機排序指定內容了,可是仍是有undefined的狀況dom

 while (arr.length) {
        str += arr.splice(parseInt(Math.random() * arr.length), 1)[0] ;
    }

最終版本,我隨機刪除其中一個元素,而後把這個元素輸出,就避免了undefined的狀況了,可是這種作法的弊端是這時候arr數組就沒有數據了,若是須要作定時刷新就不能夠了,必須是手動刷新纔會隨機加載,若是須要作定時刷新仍是須要新建一個數組,而後往裏面插入元素,加一個定時器就能夠實現定時刷新內容了。由於個人需求是手動刷新,因此用了最後的版本簡潔大方。作了整整一下午大概改版了七八次,感受還不錯發個博客小小得瑟下,但願幫到別人spa

相關文章
相關標籤/搜索