Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何选择3个独特的阵列?_Javascript_Jquery_Arrays_Unique - Fatal编程技术网

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()
方法的快捷方式。相反,在这个特定场景中,这是实现相同结果的较短方法。在其他情况下,结果可能会不同。@斜视是的,从字面上说你是绝对正确的<代码>~~是截断小数部分的技巧。