2016-03-11 55 views
0

如何設置我的textarea包含我的數組中隨機順序的所有值的值? 我現在有2個問題:如何從數組中取出隨機元素而不重複並將其放到textarea

  • 如果我通過數組循環,它把只有一個元素到 textarea的
  • 我不想元素被複制

這裏是我的代碼

var area = document.getElementById('area'); 
var arr =['www.google.com','www.bing.com','www.yahoo.com','www.codecademy.com','twitter.com' 
    ];  
var rand = arr[Math.floor(Math.random()*arr.length)]; 

for(var i in arr) { 
    area.value = arr[i]; 
} 
+1

創建另一個數組並繼續在該數組中存儲rand值。並用新數組中的值檢查新的rand值以避免重複打印。這是我從你的問題中瞭解到的。如果這不是你想要的,那麼請解釋更多,並嘗試發佈一些更多的代碼或創建一個小提琴。 –

回答

5

你實際上只是想要洗牌數組,然後加入任何你想要的數組。

例如使用隨機播放功能從this answer

/** 
* Shuffles array in place. 
* @param {Array} a items The array containing the items. 
* @return {Array} a The shuffled array 
*/ 
function shuffle(a) { 
    var j, x, i; 
    for (i = a.length; i; i -= 1) { 
     j = Math.floor(Math.random() * i); 
     x = a[i - 1]; 
     a[i - 1] = a[j]; 
     a[j] = x; 
    } 
} 

然後使用它是這樣的:

var area = document.getElementById('area'); 
var arr =['www.google.com','www.bing.com','www.yahoo.com','www.codecademy.com','twitter.com'];  
shuffle(arr); 

area.value = arr.join(' '); // or with whatever you want to separate them 

檢查的jsfiddle例如:here

+0

你打敗了我!我做了一個演示這種技術的小提琴:https://jsfiddle.net/xhy38o5g/ – Ageonix

+0

@PostCrafter非常感謝,正是我需要的 – Viktor

-1

你可以嘗試刪除那些已經元素通過拼接打印出來。

var origArr = arr; 

for(var i in arr) { 
    area.value = arr[i]; 
    arr.splice(i, 1); 
} 
相關問題