在for循环中显示随机数组属性

时间:2013-01-24 08:44:03

标签: javascript random

for循环alerts来自array的{​​{1}}字符串,我想知道我如何alert他们randomly,所以它会运行gamesNames.length }次并在JavaScript中每次以不同的随机顺序显示它们(不重复它们)?

  for (var i = 0; i < gamesNames.length; i++) {
            alert (gamesNames[i].Name + gamesNames[i].year );
        }

3 个答案:

答案 0 :(得分:1)

创建一个包含索引和随机数的项目的数组。通过对随机数进行排序来对它们进行排序,并使用索引来提醒项目:

var idx = [];
for (var i = 0; i < gamesNames.length; i++) {
  idx.push({ idx: i, rnd: Math.floor(Math.random() * 100000) });
}
idx.sort(function(x,y){ return x.rnd - y.rnd; });
for (var i = 0; i < idx.length; i++) {
  var j = idx[i].idx;
  alert (gamesNames[j].Name + gamesNames[j].year);
}

答案 1 :(得分:1)

这是主要想法的链接http://www.javascriptkit.com/javatutors/arraysort.shtml,在Javascript中

这是代码

...
gamesNames.sort(function() {return 0.5 - Math.random()}) ;
for (var i = 0; i < gamesNames.length; i++) {
      alert (gamesNames[i].Name + gamesNames[i].year );
}
...

我希望这会有所帮助。

答案 2 :(得分:1)

您可以轻松地使用while-looparray.splice

结合使用
var array = ["1", "2", "3", "4"];
while(array.length > 0)
{
    // Get a random index
    var index = Math.floor(Math.random() * array.length);
    // Append it to the DOM (or do whatever you want with it)
    $("body").append($("<p />").html(array[index]));
    // Remove it from the array
    array.splice(index, 1);
}

JSFiddle