zoukankan      html  css  js  c++  java
  • lodash函数库 -- chunk

    loadsh函数库中的 chunk 函数采用 typescript 语法重写.

    chunk 函数
    将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。
    如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。

    /**
     *
     * 将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。
     * 如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。
     *
     * @param array 需要处理的数组
     * @param size 每个数组区块的长度
     * @returns {Array<Array<T>>}
     * @example
     *
     * chunk(['a', 'b', 'c'], 2)
     * // => [['a', 'b'], ['c']]
     *
     * chunk(['a', 'b', 'c','d'], 2)
     * // => [['a', 'b'], ['c','d']]
     */
    const chunk = <T>(array: Array<T>, size = 1): Array<Array<T>> => {
    	// 边界检测
    	// 需要考虑块长度小于1和空数组
    	const length = array.length;
    	if (!length || size < 1) return [];
    
    	let index = 0; // 处理数组起始位
    	let resindex = 0; // 新数组起始位
    	const result = new Array<Array<T>>(Math.ceil(length / size));
    	while (index < length) {
    		result[resindex++] = array.slice(index, (index += size)); // size 为步长值
    	}
    	return result;
    };
    
    export default chunk;
    
    
    import chunk from "../src/chunk";
    
    const arr = [1, 2, 3, 4, 5, 6];
    const n = chunk(arr, 3);
    console.log(n); // [ [ 1, 2, 3 ], [ 4, 5, 6 ] ]
    
    const arrs = ["a", "b", "c"];
    const n1 = chunk(arrs, 2);
    console.log(n1); // [ [ 'a', 'b' ], [ 'c' ] ]
    
    const arre = [] as Array<string>;
    const n2 = chunk(arre, 2);
    console.log(n2); // []
    

    个人作品

    ip定位查询浏览器插件
    老虎优惠券浏览器插件

  • 相关阅读:
    PHP 页面编码声明方法详解(header或meta)
    淘客部分功能实现源码
    CSS3动画效果应用
    JavaScript之Tab标签(原始版)
    JavaScript之淡入淡出
    关于响应式布局
    深入理解 SVG 系列(一) —— SVG 基础
    面试题
    随记
    一道经典面试题-----setTimeout(function(){},0)
  • 原文地址:https://www.cnblogs.com/whnba/p/14243698.html
Copyright © 2011-2022 走看看