在Javascript中生成不相邻重复的随机数数组?

在Javascript中生成不相邻重复的随机数数组?,javascript,arrays,math,random,Javascript,Arrays,Math,Random,我有一个函数,它将随机数序列推送到一个空数组。我不介意在数组中重复,但我真的需要它不要重复彼此相邻的数字。例如[1,2,3,4,1]完全可以,但[1,1,2,3,4]不行。我曾尝试在代码中加入if语句,但我没有完全正确。下面是我用来生成数组的代码。一如既往,我们非常感激您的帮助 let initArray = []; function makeCircleArray(level) { var i = 0; do { var val = Math.floor(Math.ran

我有一个函数,它将随机数序列推送到一个空数组。我不介意在数组中重复,但我真的需要它不要重复彼此相邻的数字。例如[1,2,3,4,1]完全可以,但[1,1,2,3,4]不行。我曾尝试在代码中加入if语句,但我没有完全正确。下面是我用来生成数组的代码。一如既往,我们非常感激您的帮助

let initArray = [];

function makeCircleArray(level) {
    var i = 0;
  do {
    var val = Math.floor(Math.random() * 9)
    initArray.push(val)
    i++
  }
  while (i < level.dots)
  console.log(`${initArray}`)
  return initArray;
}
让initArray=[];
函数makeCircleArray(级别){
var i=0;
做{
var val=Math.floor(Math.random()*9)
initArray.push(val)
我++
}
而(i
保留最后一个值,如果得到相同的值,则重复循环:

var last_val = null;
do {
  var val = Math.floor(Math.random() * 9);
  if(val == last_val) continue;
  initArray.push(val);  
  i++;
  last_val = val;
 } while(i < level.dots)
var last\u val=null;
做{
var val=Math.floor(Math.random()*9);
如果(val==last_val)继续;
initArray.push(val);
i++;
last_val=val;
}而(i
如果新值与先前插入的值相匹配,则可以不插入新值:

让initArray=[];
函数makeCircleArray(级别){
var i=0;
做{
var val=Math.floor(Math.random()*9);
if(val!==initArray[initArray.length-1]){
initArray.push(val);
i++;
}
}而(imakeCircleArray({点:20})数组是否只包含一位数,或者可以包含更多位数的数字?对于第一个值,您需要一个特例,并且当发现重复项时,您不能增加循环,否则将在结果数组中获得太少的元素。提供运行代码的荣誉。你比我强:-)第一个值不需要特殊情况(它最终与
未定义的
进行比较,结果很好。)我经常用递增
I
来纠正这个问题;谢谢你指出这一点!回滚删除解释性文本并对代码添加不重要更改的编辑。请不要这样做@baymax