JavaScript中的数组值洗牌 我们考虑下面的字符:
JavaScript中的数组值洗牌 我们考虑下面的字符:,javascript,arrays,shuffle,Javascript,Arrays,Shuffle,H、M、L 我想创建排序数组,如下所示: var array1=[“H”、“M”、“L”、“L”、“M”、“H”] 我不想要的是,当我shuffle()数组时,前三个和后三个字符包含多个唯一字符 e、 g var错误=[“H”、“M”、“M”、“H”、“M”、“L”];//注意前三个值中的两个M 如果我像下面那样使用shuffle(): var array2=array1.shuffle()然后我会冒重复字符的风险 我想要一些帮助来确定最简单的方法,以确保数组中的第1个和第2个三个值中没有重复的
H、M、L
我想创建排序数组,如下所示:
var array1=[“H”、“M”、“L”、“L”、“M”、“H”]代码>
我不想要的是,当我shuffle()
数组时,前三个和后三个字符包含多个唯一字符
e、 g
var错误=[“H”、“M”、“M”、“H”、“M”、“L”];//注意前三个值中的两个M
如果我像下面那样使用shuffle()
:
var array2=array1.shuffle()代码>然后我会冒重复字符的风险
我想要一些帮助来确定最简单的方法,以确保数组中的第1个和第2个三个值中没有重复的字符
编辑:将随机更改为排序。多亏了@Xotic750的回答,我最终得到了这样的结果
Array.prototype.shuffle = function() {
var i = this.length, j, temp;
if ( i == 0 ) return this;
while ( --i ) {
j = Math.floor( Math.random() * ( i + 1 ) );
temp = this[i];
this[i] = this[j];
this[j] = temp;
}
return this;
}
var array = [ "H", "M", "L" ];
var b = array.slice().shuffle().concat(array.slice().shuffle());
输出。在原型机上或作为独立设备创建洗牌
函数洗牌(obj){
var i=对象长度;
var rnd,tmp;
而(i){
rnd=Math.floor(Math.random()*i);
i-=1;
tmp=obj[i];
obj[i]=obj[rnd];
obj[rnd]=tmp;
}
返回obj;
}
变量a=['H','M','L'],
b=随机播放(a.slice()).concat(随机播放(a.slice());
控制台日志(b)代码>如果您有这样的条件,那么它不是“随机的”。也许你想排序而不是洗牌?var a=['H','M','L'];var b=a.slice().shuffle().concat(a.slice().shuffle())代码>可能吗?@Xotic750这似乎很管用,谢谢。请随意添加它作为答案,我会接受的。