Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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_Random - Fatal编程技术网

Javascript 按条件创建数组

Javascript 按条件创建数组,javascript,random,Javascript,Random,我想通过以下方式向数组中插入数字: 数字应介于1-5之间 第一个数字不能是1,第二个数字不能是2,以此类推 无法将所选编号插入到其他索引 例如: [1,2,3,4,5] 我随机化第一个数字:1[条件2不存在:1不能在第一个索引中,所以我再次随机化得到4) 因此,新阵列: 0 - 4 1 - 2 - 3 - 4 - 我将一个数字随机化到第二个单元格,得到了4,但是4被插入到了第一个元素[条件3],所以我再次随机化,得到了2,但是2不能是第二个元素[条件2],所以我再次随机化,得到了5 0

我想通过以下方式向数组中插入数字:

  • 数字应介于1-5之间
  • 第一个数字不能是1,第二个数字不能是2,以此类推
  • 无法将所选编号插入到其他索引
  • 例如:

    [1,2,3,4,5]

    我随机化第一个数字:1[条件2不存在:1不能在第一个索引中,所以我再次随机化得到4)

    因此,新阵列:

    0 - 4
    1 - 
    2 - 
    3 - 
    4 - 
    
    我将一个数字随机化到第二个单元格,得到了4,但是4被插入到了第一个元素[条件3],所以我再次随机化,得到了2,但是2不能是第二个元素[条件2],所以我再次随机化,得到了5

    0 - 4
    1 - 5
    2 - 
    3 - 
    4 - 
    

    我试图通过数字(1-5)初始化vec:

    var数组=新数组();
    数组[0]=1;
    数组[1]=2;
    数组[2]=3;
    数组[3]=4;
    数组[4]=5;
    var newarr=新数组();
    函数getRandomInt(最小值、最大值){
    返回Math.floor(Math.random()*(max-min+1))+min;
    }
    $(文档).ready(函数(){
    对于(变量i=0;i<5;i++){
    var rand;
    //检查条件2
    而((rand=getRandomInt(1,5))==(i+1));
    newarr[i]=兰特;
    //阵列拼接(i,1);
    }
    //打印新数组
    对于(变量i=0;i<5;i++){
    警报((i+1)+'->'+newarr[i]);
    }
    });
    
    但我需要在代码中添加条件3

    感谢您的帮助!

    试试以下方法:

    $(document).ready(function() {
        for (var i = 0; i < 5; i++) {
            var rand;
            // check condition 2
            while((rand = getRandomInt(1, 5)) == (i+1) || $.inArray(rand, newarr)) // Also check, if generated number is already in the array
            newarr[i] = rand;
            //array.splice(i, 1);
        }
    
        // print the new array
        for (var i = 0; i < 5; i++) {
            alert((i+1) + '->' + newarr[i]);   
        }
    });
    
    由于唯一可用的数字是5,但无法将其插入该位置,因此最终将出现一个无止境的while循环。

    var values=[1,2,3,4,5];
    
    var values = [1,2,3,4,5];
    var output = [];
    
    
    for(var i=0;i<5;i++)
    {
        do{
           var index = Math.floor(Math.random() * values.length);
        }while(values[index] == i +1);
        output[i] = values[index];
        values.splice(index, 1);
    }
    
    console.log(output);
    
    var输出=[]; 对于(var i=0;i
    [2, 1, 4, 3]
    
    var values = [1,2,3,4,5];
    var output = [];
    
    
    for(var i=0;i<5;i++)
    {
        do{
           var index = Math.floor(Math.random() * values.length);
        }while(values[index] == i +1);
        output[i] = values[index];
        values.splice(index, 1);
    }
    
    console.log(output);