iT邦幫忙

DAY 27
0

Sharping up with UnderScore.js library系列 第 28

Underscore [27] : 使用 shuffle

  • 分享至 

  • xImage
  •  

今天來介紹 Underscore 其中一個功能 , shuffle ,

它能夠返回一個隨機排序的陣列副本 , 簡單的範例如下 :

_.shuffle([1, 2, 3, 4, 5, 6]);
=> [4, 1, 6, 3, 5, 2]

其內部實做使用 Fisher-Yates shuffle 演算法 ,

其原始碼如下 :

它會先取出第一個元素 , 並與 n 個元素做交換的動作 ,

接下來選第二個元素 , 並與 n - 1 個元素再做交換 , 以此類推

_.shuffle = function(obj) {
    var set = obj && obj.length === +obj.length ? obj : _.values(obj);
    var length = set.length;
    var shuffled = Array(length);
    for (var index = 0, rand; index < length; index++) {
      rand = _.random(0, index);
      if (rand !== index) shuffled[index] = shuffled[rand];
      shuffled[rand] = set[index];
    }
    return shuffled;
  };

本文同步發布於 保政島 Underscore 使用 shuffle


上一篇
Underscore [26] : 使用 memoize
下一篇
Underscore [28] : When to use Compact
系列文
Sharping up with UnderScore.js library31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言