Javascript 了解jQuery.shuffle()插件或函数

Javascript 了解jQuery.shuffle()插件或函数,javascript,jquery,Javascript,Jquery,任何人都可以帮助我理解这个jQuery插件是如何工作的。我不明白这个.shuffle()方法是如何工作的。这里还有JSbin链接 理解for循环的语法将有助于了解发生了什么: for(INIT (optional); CONDITION (optional); FINAL EXPRESSION (optional)) STATEMENT (optional) 虽然for循环通常与特定语法一起使用(var i=0;i

任何人都可以帮助我理解这个jQuery插件是如何工作的。我不明白这个.shuffle()方法是如何工作的。这里还有JSbin链接


理解
for
循环的语法将有助于了解发生了什么:

for(INIT (optional); CONDITION (optional); FINAL EXPRESSION (optional))
   STATEMENT (optional)
虽然
for
循环通常与特定语法一起使用(
var i=0;i
),但您可以省略任何或所有表达式(正如此函数的作者所做的),也可以在每个表达式中执行多个操作。下面是注释的
$.shuffle
函数的更详细版本:

$.shuffle = function(arr) {
    for(var i = arr.length; i > 0; i--) {
      // get random index
      var j = parseInt(Math.random() * i);
      // x = next element
      var x = arr[ i - 1 ];
      // next element = random element
      arr[ i - 1 ] = arr[j];
      // random element = next element's previous value
      arr[j] = x;
    }
    return arr;
}
他们没有使用这种长格式方法,而是选择在INIT表达式中设置所有变量,只需在条件表达式中选中
i
(因为它们正在递减,循环将在0处停止),然后在最终表达式中执行递减和赋值

$.shuffle = function(arr) {
    for(var i = arr.length; i > 0; i--) {
      // get random index
      var j = parseInt(Math.random() * i);
      // x = next element
      var x = arr[ i - 1 ];
      // next element = random element
      arr[ i - 1 ] = arr[j];
      // random element = next element's previous value
      arr[j] = x;
    }
    return arr;
}