Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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中的数组值洗牌 我们考虑下面的字符:_Javascript_Arrays_Shuffle - Fatal编程技术网

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这似乎很管用,谢谢。请随意添加它作为答案,我会接受的。