js隨機取出陣列中不重複值元素程式碼和例項

antzone發表於2017-03-29

本章節介紹一下如何從陣列中隨機取出不重複的元素,這樣的效果比較適用於抽獎效果。

最好當前的陣列中的元素是不重複的,如果有重複的可以事先進行去重操作,可以參閱javascript如何去掉陣列中重複的值一章節。程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
var arr=[5,6,9,10,18,20,30,22,24];
var temp=[];
function done(arr){
  var count=arr.length;
  var rand=parseInt(Math.random()*count);
  if(temp.length==0){
    return arr[rand];
  }
  else{
    for(var index=0;index<temp.length;index++){
      if(arr[rand]==temp[index]){
        continue;
      }
      else{
        temp.push(arr[rand]);
        return arr[rand];
      }
    }
  }
}
console.log(done(arr));

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

1.var arr=[5,6,9,10,18,20,30,22,24],要取隨機數的陣列。

2.var temp=[],宣告一個空陣列用來儲存已經取過的元素。

3.function done(arr){},此函式實現了取隨機數的功能,引數是一個陣列物件。

4.var count=arr.length,獲取陣列的長度。

5.var rand=parseInt(Math.random()*count),獲取隨機數。

6.if(temp.length==0){

  return arr[rand];

},如果臨時陣列的中的元素為零,那麼直接返回相應索引的元素,因為不可能有重複的。

7.else{

  for(var index=0;index<temp.length;index++){

    if(arr[rand]==temp[index]){

      continue;

    }

    else{

      temp.push(arr[rand]);

      return arr[rand];

    }

  }

},遍歷臨時陣列,與當前取出的陣列元素進行比對,如果在臨時陣列中,那麼進行下一個for迴圈,否則的話將元素壓入臨時陣列,然後返回此陣列元素。

二.相關閱讀:

1.parseInt()函式可以參閱js parseInt()一章節。

2.Math.random()函式可以參閱javascript Math.random()一章節。

3.push()函式javascript push()一章節。

相關文章