首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >按条件创建数组

按条件创建数组
EN

Stack Overflow用户
提问于 2013-09-27 09:19:04
回答 2查看 110关注 0票数 1

我希望在下一个数组中插入数字:

  1. 号码应该在1-5之间。
  2. 第一个数字不能是1,第二个数字不能是2,等等。
  3. 所选数字不能插入到其他索引中

例如:

1,2,3,4,5

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

所以新的数组:

代码语言:javascript
代码运行次数:0
运行
复制
0 - 4
1 - 
2 - 
3 - 
4 - 

我把一个数字随机化到第二个单元,得到4个,但是4被插入到第一个元素条件3,所以我再次随机化,得到2,但是2不能是第二个元素条件2,所以我再次随机化,得到5。

代码语言:javascript
代码运行次数:0
运行
复制
0 - 4
1 - 5
2 - 
3 - 
4 - 

我试着用数字(1-5)插入一个vec:

代码语言:javascript
代码运行次数:0
运行
复制
var array = new Array();

array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;

var newarr = new Array();

function getRandomInt (min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

$(document).ready(function() {
    for (var i = 0; i < 5; i++) {
        var rand;
        // check condition 2
        while((rand = getRandomInt(1, 5)) == (i+1));   
        newarr[i] = rand;
        //array.splice(i, 1);
    }

    // print the new array
    for (var i = 0; i < 5; i++) {
        alert((i+1) + '->' + newarr[i]);   
    }
});

但我需要在代码中添加条件3,

任何帮助都很感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-27 09:25:12

试试这个:

代码语言:javascript
代码运行次数:0
运行
复制
$(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]);   
    }
});

但要小心。例如,如果生成这个数组:

代码语言:javascript
代码运行次数:0
运行
复制
[2, 1, 4, 3]

因为唯一可用的数字是5,所以最终会有一个没完没了的while循环,但是不能将它插入到那个位置。

票数 1
EN

Stack Overflow用户

发布于 2013-09-27 09:30:49

代码语言:javascript
代码运行次数:0
运行
复制
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);

演示:http://jsfiddle.net/aJ8sH/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19047128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档