我正在尝试随机化标准循环函数。这是原始循环:
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>");
}
}
任何人都可以帮助我。到目前为止我没有运气。
答案 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>");
}
}
它随机化而不重复