发表于: 2019-02-19 19:37:57

1 521


今天完成的事情:解决了数组乱序

function shuffle() {
const array=["killer","killer","civilian", "civilian", "civilian", "civilian", "civilian", "civilian", "civilian", "civilian"];
   // var _array = array.concat();

   for (var i = array.length; i--; ) {
var j = Math.floor(Math.random() * (i + 1));
       var temp = array[i];
       array[i] = array[j];
       array[j] = temp;
   }
console.log(array);

   return array;

}

过程中遇到了作用域的问题,定义数组卸载函数外面的时候不能引用成功,必须在函数里定义才可以,这是为什么,在最外面写是全局都可以用的吧.

第二种方法是从前往后

_.shuffle = function(obj) {  var set = isArrayLike(obj) ? 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;
};

不太清楚的地方是解耦分离  从上到下是解耦分离

function shuffle(a) {  var length = a.length;  var shuffled = Array(length);  for (var index = 0, rand; index < length; index++) {
    rand = ~~(Math.random() * (index + 1));    if (rand !== index) 
      shuffled[index] = shuffled[rand];
    shuffled[rand] = a[index];
  }  return shuffled;
}



返回列表 返回列表
评论

    分享到