Javascript 如何选择3个独特的阵列?
如何从Javascript 如何选择3个独特的阵列?,javascript,jquery,arrays,unique,Javascript,Jquery,Arrays,Unique,如何从arr中选择3个唯一阵列 我只能一个接一个地挑 var arr = ['1','2','3','4']; 拾取的数组将不会重复 我不知道该怎么做。。。非常感谢:D 操场:一种可能的解决方案: function pick(a){ var i = Math.floor(Math.random()*a.length); return a[i]; } var copy = arr.slice(); while (copy.length > 3) { copy.sp
arr
中选择3个唯一阵列
我只能一个接一个地挑
var arr = ['1','2','3','4'];
拾取的数组将不会重复
我不知道该怎么做。。。非常感谢:D
操场:一种可能的解决方案:
function pick(a){
var i = Math.floor(Math.random()*a.length);
return a[i];
}
var copy = arr.slice();
while (copy.length > 3) {
copy.splice(~~(Math.random() * copy.length), 1);
}
还有更可爱的解决方案:
function pick(a){
var i = Math.floor(Math.random()*a.length);
return a[i];
}
var copy = arr.slice();
while (copy.length > 3) {
copy.splice(~~(Math.random() * copy.length), 1);
}
一种可能的解决办法:
function pick(a){
var i = Math.floor(Math.random()*a.length);
return a[i];
}
var copy = arr.slice();
while (copy.length > 3) {
copy.splice(~~(Math.random() * copy.length), 1);
}
还有更可爱的解决方案:
function pick(a){
var i = Math.floor(Math.random()*a.length);
return a[i];
}
var copy = arr.slice();
while (copy.length > 3) {
copy.splice(~~(Math.random() * copy.length), 1);
}
另一种可能的解决办法:
/**
* Returns a random integer between min and max
*/
function getRandomInt (min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var picker=函数(a,已拾取){
如果(!拾取)拾取=[];
var randomNumber=Math.floor(Math.random()*a.length);
if(picked.indexOf(a[randomNumber])=-1)picked.push(a[randomNumber]);
如果(拾取长度<3)
返回选择器(a,已拾取);
其他的
回采;
}
游乐场:另一种可能的解决方案:
/**
* Returns a random integer between min and max
*/
function getRandomInt (min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var picker=函数(a,已拾取){
如果(!拾取)拾取=[];
var randomNumber=Math.floor(Math.random()*a.length);
if(picked.indexOf(a[randomNumber])=-1)picked.push(a[randomNumber]);
如果(拾取长度<3)
返回选择器(a,已拾取);
其他的
回采;
}
操场:是否可以修改源阵列,然后是否可以修改源阵列,然后谢谢!看起来很简单,什么是
~
?@l2aelba这是数学的捷径。地板
。是的,这应该比我的答案快!愿景:我知道你所说的捷径是什么意思,但@l2aelba可能不是。它不是直接映射到.floor()
方法的快捷方式。相反,在这个特定场景中,这是实现相同结果的较短方法。在其他情况下,结果可能会不同。@斜视是的,从字面上说你是绝对正确的<代码>~~是截断小数部分的技巧。谢谢!看起来很简单,什么是~
?@l2aelba这是数学的捷径。地板
。是的,这应该比我的答案快!愿景:我知道你所说的捷径是什么意思,但@l2aelba可能不是。它不是直接映射到.floor()
方法的快捷方式。相反,在这个特定场景中,这是实现相同结果的较短方法。在其他情况下,结果可能会不同。@斜视是的,从字面上说你是绝对正确的<代码>~~是截断小数部分的技巧。