随机循环函数 - jsonp

时间:2013-08-14 19:03:16

标签: javascript json loops random

我正在尝试随机化标准循环函数。这是原始循环:

success: function(data) {
for (var i = 0; i < 15; i++) {
  $("#myimages").append("<a href='" + data.data[i].link + "' target='_blank' style='float:center;width:300px; height:300px;'><img style='width:20%;' src='" + data.data[i].images.standard_resolution.url + "' /></a>");
  }
}

任何人都可以帮助我。到目前为止我没有运气。

3 个答案:

答案 0 :(得分:0)

这是一个小提琴,显示15个数字被随机化,然后循环通过:http://jsfiddle.net/pH6Lx/

function Shuffle(o) {
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;
};

$(document).ready(function() {
//init array
var testArray = [];

//Fill it with 15 numbers    
for(var i=0;i<15;i++)
    testArray.push(i);

//Shuffle it ("randomize")    
Shuffle(testArray);

//Do something with these numbers    
 for (var i=0;i<testArray.length;i++) {
     $('#random').append(testArray[i]+'<br />');
   }
});

在你的情况下,这可能全部发生在你的回调中。

答案 1 :(得分:0)

首先,只需随机化数组,请参阅:How to randomize (shuffle) a JavaScript array?

success: function(data) {
    function shuffleArray(array) {
        for (var i = array.length - 1; i > 0; i--) {
            var j = Math.floor(Math.random() * (i + 1));
            var temp = array[i];
            array[i] = array[j];
            array[j] = temp;
        }
        return array;
    }

    shuffleArray(data);

然后像以前一样继续:

    for (var i = 0; i < 15; i++) {
        $("#myimages").append("<a href='" + data.data[i].link + "' target='_blank' style='float:center;width:300px; height:300px;'><img style='width:20%;' src='" + data.data[i].images.standard_resolution.url + "' /></a>");
    }
}

答案 2 :(得分:0)

如果您在data.data中传递图像列表,则可以执行以下操作

 success: function(data) {

    var numberOfImages = Math.min( 15, data.data.length ) ; //bug free to don't repeat        
    var alreadyShow = {}; //to don't repeat


    for (var i = 0; i < numberOfImages ; i++) {

        do{

            var imgIndex = Math.round( Math.random() * ( data.data.length - 1 ) );    

        }while( alreadyShow[imgIndex] );

        alreadyShow[imgIndex] = true;    

        $("#myimages").append("<a href='" + data.data[imgIndex].link + "' target='_blank' style='float:center;width:300px; height:300px;'><img style='width:20%;' src='" + data.data[imgIndex].images.standard_resolution.url + "' /></a>");
      }
    }

它随机化而不重复