随机否没有重复

时间:2014-01-01 07:06:09

标签: javascript random

我的代码在这里没有div,我必须一次选择5个randomaly

<div id="#jpId1"></div>
<div id="#jpId2"></div>
<div id="#jpId3"></div>
<div id="#jpId4"></div>
<div id="#jpId5"></div>
<div id="#jpId6"></div>
<div id="#jpId7"></div>
<div id="#jpId8"></div>
<div id="#jpId9"></div>
<div id="#jpId10"></div>
<div id="#jpId11"></div>

我希望array (r)values of id's没有重复,但值会重复......任何帮助都很明显......我必须将这些ID用于特定用途

var itemp = ["#jpId1", "#jpId2", "#jpId3", "#jpId4", "#jpId5", "#jpId6", "#jpId7","#jpId8", "#jpId9", "#jpId10", "#jpId11"]
for (var i = 0; i < 5; i++) {
    var r = itemp[Math.floor(Math.random() * itemp.length)];
    alert(r);
}

4 个答案:

答案 0 :(得分:1)

试试这个(splice从源数组中删除所选元素):

var r = [];
for (var i = 0; i < 5; i++) {
    r.push(itemp.splice(
        Math.floor(Math.random() * itemp.length), 1
    )[0]);
}
alert(r);

答案 1 :(得分:0)

当你从数组中得到第一个随机值时,使用splice方法从数组中删除该particluar值。

var random = Math.floor(Math.random() * item.length);
item[random];

然后从数组中删除该特定值。

item.splice(random,1);

在循环中使用它会为你提供每个新值。

答案 2 :(得分:0)

您可以查看以下代码:

var nums = ["#jpId1", "#jpId2", "#jpId3", "#jpId4", "#jpId5", "#jpId6", "#jpId7","#jpId8", "#jpId9", "#jpId10", "#jpId11"],
ranNums = [],
i = 5,
j = 0;
k = 10;

while (i--) {
   j = Math.floor(Math.random() * (k+1));
   ranNums.push(nums[j]);
   nums.splice(j,1);
   k--;
}

console.log(ranNums);

您可以在此处找到http://jsfiddle.net/8Xb5g/1/

链接

答案 3 :(得分:0)

以下是代码:

var itemp = ["#jpId1", "#jpId2", "#jpId3", "#jpId4", "#jpId5", "#jpId6", "#jpId7","#jpId8", "#jpId9", "#jpId10", "#jpId11"];
id_arr=Array();
for (var i = 0; i < 5; i++) {
    var r = itemp[Math.floor(Math.random() * itemp.length)];
    if($.inArray(r, id_arr)>-1)
    {
        alert ("duplicate "+r+", hence discarded");
        i--;
        continue;
    }
    else
        id_arr.push(r);
    alert(r);
}
console.log(id_arr)

<强> Fiddle