控制台log输出为何频频失踪?
wxss代码为何频频失效?
wxml布局为何乱作一团?
究竟是道德的沦丧?还是人性的缺失?
让我们一起来走跑进科学
前言
确实今天写代码遇到一个场景需要这种伪随机的算法,跟普通打乱数组还不太一样,
在打乱的基础上加了一条,打乱后每个位置的元素不得与原数组的同位置元素相等,这就很头疼了
大伙以后遇见直接复制吧 别死脑细胞了 闹心~
正文
randerArr(arr) {
var newArr = arr.slice(0);
var len = arr.length;
var indexArr = [];
for (var i = 0; i < len; i++) {
if (indexArr[i]) {
continue;
}
var random = Math.floor(Math.random() * len);
while (random === i) {
random = Math.floor(Math.random() * len);
}
indexArr[random] = indexArr[i] = true;
var swap = newArr[i];
newArr[i] = newArr[random];
newArr[random] = swap;
}
return newArr
}
调用时
arr = [1, 2, 3, 4, 5, 6]
onLoad() {
//在生命周期中调用,加载页面时调用函数
console.log(this.randerArr(this.arr));
//运行结果:[4, 3, 6, 1, 2, 5]
}
总结
确实今天写代码遇到一个场景需要这种伪随机的算法,跟普通打乱数组还不太一样,
在打乱的基础上加了一条,打乱后每个位置的元素不得与原数组的同位置元素相等,这就很头疼了
大伙以后遇见直接复制吧 别死脑细胞了 闹心~