var arr = ['1','2','3','4'];
如何从中挑选 3 个独特的数组arr
?
我只能一一挑选喜欢..
function pick(a){
var i = Math.floor(Math.random()*a.length);
return a[i];
}
选择的数组不会重复。
我不知道该怎么做......非常感谢:D
游乐场:http: //jsbin.com/ocuhig/1/edit
var arr = ['1','2','3','4'];
如何从中挑选 3 个独特的数组arr
?
我只能一一挑选喜欢..
function pick(a){
var i = Math.floor(Math.random()*a.length);
return a[i];
}
选择的数组不会重复。
我不知道该怎么做......非常感谢:D
游乐场:http: //jsbin.com/ocuhig/1/edit
一种可能的解决方案:
var copy = arr.slice();
while (copy.length > 3) {
copy.splice(~~(Math.random() * copy.length), 1);
}
还有更可爱的解决方案:
var copy = arr.slice().sort(function() {
return Math.random() - 0.5;
}).slice(0, 3);
/**
* Returns a random integer between min and max
*/
function getRandomInt (min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
另一种可能的解决方案:
var picker = function(a, picked) {
if ( !picked ) picked = [];
var randomNumber = Math.floor(Math.random()*a.length);
if ( picked.indexOf(a[randomNumber]) === -1 ) picked.push(a[randomNumber]);
if ( picked.length < 3 )
return picker(a, picked);
else
return picked;
}
游乐场:http: //jsbin.com/owevuh/1/