0

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

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>");
  }
}

谁能帮帮我。到目前为止,我没有运气。

4

3 回答 3

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 />');
   }
});

在您的情况下,这可能都发生在您的回调中。

于 2013-08-14T19:15:29.973 回答
0

首先,只需随机化数组,请参阅: 如何随机化(随机播放)JavaScript 数组?.

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>");
    }
}
于 2013-08-14T19:17:20.330 回答
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>");
      }
    }

它是随机的,没有重复

于 2013-08-14T19:18:19.577 回答