您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将JS数组拆分为N个数组

将JS数组拆分为N个数组

您可以使条带“平衡”(子阵列的长度差异尽可能小)或“偶数”(除最后一个以外的所有子阵列具有相同的长度):

function chunkify(a, n, balanced) {



    if (n < 2)

        return [a];



    var len = a.length,

            out = [],

            i = 0,

            size;



    if (len % n === 0) {

        size = Math.floor(len / n);

        while (i < len) {

            out.push(a.slice(i, i += size));

        }

    }



    else if (balanced) {

        while (i < len) {

            size = Math.ceil((len - i) / n--);

            out.push(a.slice(i, i += size));

        }

    }



    else {



        n--;

        size = Math.floor(len / n);

        if (len % size === 0)

            size--;

        while (i < size * n) {

            out.push(a.slice(i, i += size));

        }

        out.push(a.slice(size * n));



    }



    return out;

}





///////////////////////



onload = function () {

    function $(x) {

        return document.getElementById(x);

    }



    function calc() {

        var s = +$('s').value, a = [];

        while (s--)

            a.unshift(s);

        var n = +$('n').value;

        $('b').textContent = JSON.stringify(chunkify(a, n, true))

        $('e').textContent = JSON.stringify(chunkify(a, n, false))

    }



    $('s').addEventListener('input', calc);

    $('n').addEventListener('input', calc);

    calc();

}


<p>slice <input type="number" value="20" id="s"> items into

<input type="number" value="6" id="n"> chunks:</p>

<pre id="b"></pre>

<pre id="e"></pre>
其他 2022/1/1 18:18:22 有374人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶