数组-chunk

122 阅读1分钟

说明

    `_.chunk(array, [size=1])`
    将数组(array)拆分成多个 `size` 长度的区块,并将这些区块组成一个新数组。
    如果`array` 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。
    
    举例:
    _.chunk(['a', 'b', 'c', 'd'], 2);
    // => [['a', 'b'], ['c', 'd']]
    
    _.chunk(['a', 'b', 'c', 'd'], 3);
    // => [['a', 'b', 'c'], ['d']]

实现:

    function myChunk(array = [], size = 1) {
        // 判断当前传入的是否为数组
        if (!Array.isArray(array)) return array;
        // 判断当前传入的是否是一个“安全整数”
        if (!Number.isSafeInteger(size)) {
            size = 1;
        }
        
        const result = [];

        while (array.length) {
            const chunk = array.splice(0, size);
            result.push(chunk);
        }

        return result;
    }

    console.log(myChunk([1, 2, 3, 4, 5], 2));
    // [ [ 1, 2 ], [ 3, 4 ], [ 5 ] ]

总结:这里用到的知识点为:splice 函数改变原数组并且返回切割的数据以数组形式