2016-03-11 30 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); 
} 
相关问题