JS如何将2N个元素数组两两随机分组呢?

我想将一个有偶数个元素的数组两两随机分组,比如


[1,2,3,4,5,6,7,8]

输出可能有一个结果是:


[[1,3],[2,5],[4,8],[6,7]]

自己尝试写了一下代码,如下:


function arrSlice(arr) {

    if(arr.length % 2 !== 0) return 0;

    var 

        newArr = [],

        //临时辅助数组

        tmpArr = [];

    for(let i=0;i<arr.length;i++) {

        if(!tmpArr.includes(arr[i])) {

            var rndIndex;

            do {

                rndIndex = Math.floor(Math.random() * (arr.length - (i + 1))) + (i + 1);

            } while(tmpArr.includes(arr[rndIndex]));

            newArr.push([arr[i],arr[rndIndex]]);

            tmpArr.push(arr[i]);

            tmpArr.push(arr[rndIndex]);

        }

    }

    return newArr;

}


var arr = [1,2,3,4,5,6,7,8]

console.log(arrSlice(arr));

自己是一个JS新手,感觉写出来的有点生硬,不知道有没有更好的一个实现,向各位大牛请教下,谢谢


牧羊人nacy
浏览 790回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript