以随机顺序循环遍历所有元素一次

时间:2016-03-19 13:34:47

标签: jquery

我有这个数组:

var numberArray = [1, 2, 3]

使用jQuery,以一个随机顺序循环遍历此数组中所有元素的最简单方法是什么?有效序列为3,2,12,3,1,无效序列为1,1,12,2,3

2 个答案:

答案 0 :(得分:3)

我不知道要随机化的特定jQuery方法,但你可以将数组排序为随机顺序然后循环。

$(function() {
    var numberArray = [1,2,3];
    numberArray.sort(function() {
        return 0.5 - Math.random();
    })
    $.each(numberArray, function(k,v) {
        $('div').append(v);
    })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>

答案 1 :(得分:0)

这应该可以帮到你。现在,脚本只是在JQuery的每个函数中打印出控制台中的每个数组值,但是您可以从$ .each函数中轻松地执行所需的任何操作。我没有parseInt()$ .each循环中的数组值,所以如果你需要它们有一个数字类型,那么你将不得不这样做。

Live Example

//The array to randomize
var numberArray = [1, 2, 3]

//sort the array randomly and convert it back to an array so 
//that you can get the value of object inside the each function.
var randomArray = numberArray.sort(randomSort).toString().split(",");

//loop through the random array
$.each(randomArray,function(){

     //log the value
     console.log(this);

 });

/* randomSort function */
function randomSort(a,b) {
    // Get a random number between 0 and 10
    var temp = parseInt( Math.random()*10 );

    // Get 1 or 0, whether temp is odd or even
    var isOddOrEven = temp%2;

    // Get +1 or -1, whether temp greater or smaller than 5
    var isPosOrNeg = temp>5 ? 1 : -1;

    // Return -1, 0, or +1
    return( isOddOrEven*isPosOrNeg );
}