Js,Ts将一个数组打乱 要求与原数组每个元素位置都不同

       控制台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]
    }

总结

确实今天写代码遇到一个场景需要这种伪随机的算法,跟普通打乱数组还不太一样,

在打乱的基础上加了一条,打乱后每个位置的元素不得与原数组的同位置元素相等,这就很头疼了

大伙以后遇见直接复制吧 别死脑细胞了 闹心~

猜你喜欢

转载自blog.csdn.net/m0_66016308/article/details/129526170