JavaScript算法练习:数组分割算法

数组分割算法
把一个数组arr按照指定的数组大小size分割成若干个数组块。

例如:chunk([1,2,3,4],2)=[[1,2],[3,4]];

chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]];

Answer:

function chunk(arr, size) {
    var len = parseInt(arr.length / size); //数组的长度除于指定的size得到一个整数。
    var remain = arr.length % size; //数组的长度除于指定的size取余
    var a = [],
        count = 1,
        sot = remain > 0 ? len + 1 : len; //sot为新数组的长度
    for (var f = 1; f <= sot; f++) {
        var start = size * (f - 1); //数组一般从0开始。
        var end = (f > len) ? ((f - 1) * size + remain) : f * size;
        //结束是按size,就是一个数学逻辑式。如果f>len,一般就是最后一次循环,只需要用前面的加上最后余的数,如果没有或没有余数,就直接f*size就是结束的点。
        var mylocates = arr.slice(start, end); //slice() 方法可从已有的数组中返回选定的元素。
        a.push(mylocates);
    }
    return a;
}
chunk(["a", "b", "c", "d"], 2);
THE END