2013-02-11 45 views
0

仍在使用JavaScript基础知识。下面的代码打印出正确的图像和属性,但我想随机化图像,我不知道如何做到这一点。我发现了其他关于使用Fisher-Yates shuffle的文章,但我似乎无法实现它,而且我不确定这是否是正确的决定。随机化多个JavaScript数组

var counter = 0; 
var pictures = new Array(); 

    pictures[counter++] = ['http://example.com','img/pic1.jpg','Pic Logo']; 
    pictures[counter++] = ['http://example2.com/','img/pic2.jpg','Pic 2 Logo']; 
    pictures[counter++] = ['http://example3.com/','img/pic3.jpg','Pic 3 Logo']; 

    function showImages() { 
     var i = 0; 
     for (var p = pictures.length-1; p >= 0; p--) { 
      document.write('<div class="images"><a href="' + pictures[p][0] + '"><img src="' + pictures[p][1] + '" alt="' + pictures[p][2] + '" title="' + pictures[p][2] + '" /></a></div>'); 
      i++; 
     } 
    } 

编辑:我如何可以访问我的图片阵列的具体项目,与我原来的代码? - http://jsfiddle.net/chris_s/eW9Tm/

+0

Underscore提供了一个['shuffle'函数](http://underscorejs.org/#shuffle),它可以实现这种混洗方法。 [看它的来源。](http://underscorejs.org/docs/underscore.html#section-29) – 2013-02-11 18:16:30

回答

1

您可以使用乔纳斯·席尔瓦的shuffle功能来随机阵列:

//+ Jonas Raoni Soares Silva 
//@ http://jsfromhell.com/array/shuffle [v1.0] 
function shuffle(o){ //v1.0 
    for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); 
    return o; 
}; 

你这样称呼它:shuffle(pictures);

+0

我想我理解这一点,但我怎么得到它返回的HTML和具体的索引项目就像我在我的原始代码?这实际上打印到控制台,但我不知道如何将它写入DOM http://jsfiddle.net/chris_s/EDTjZ/ – 2013-02-11 20:40:12