发表于: 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;
}
评论