首页 > 解决方案 > 将一个数组拆分为 n 个数组,这些数组接近 eqaul 的元素

问题描述

我想将一个数组拆分为接近相等元素的 n 个数组。这是纸牌游戏,所以最后一个最大元素的差异应该是 1 或 2

const splitArray = (arr, n) => {

    if (n < 2) {
        return arr
    }
    let size;
    let result = [];
    for (let i = 0; i < arr.length; i++) {

        if (arr.length % n === 0) {
            size = arr.length / n
            while (i < arr.length) {
                result.push(arr.slice(i, i += size))
            }
        } else {
            while (i < arr.length) {
                size = Math.floor(arr.length / n)
                result.push(arr.slice(i, i += size))
            }
        }
    }
    return result
}

console.log(splitArray(shuffled, 7).length)
console.log(splitArray(shuffled, 7))

标签: javascriptarrays

解决方案


推荐阅读