zoukankan      html  css  js  c++  java
  • 数组分组chunk的一种写法

    lodash的_.chunk函数可以将数组按照数量分成若干组,

    例如:

    const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
    const groupByNum = 3;

    会分成

    [ [1,2,3], [4,5,6], [7,8,9], [10,11] ]

    下面是一种 map + slice 的写法

    const result = Array.apply(null, {
        length: Math.ceil(data.length / groupByNum)
    }).map((x, i) => {
        return data.slice(i * groupByNum, (i + 1) * groupByNum);
    });

    写法分析:

    1. 首先使用了 Array.apply(null, {length: xxxx}) 来生成一个指定长度的数组,这里注意

    new Array(length) 生成的是 [undefined x length],是一个长度为length的数组,元素未被赋值,与[undefined, undefined, ...] length个undefined的数组并不相同。

    Array.apply(null, {length: xxxx}) 生成的是length个undefined的数组,可以使用map

    new Array(length).map 是不能正常运行的,可以使用fill,new Array(length).fill().map 可以得到预期结果

    2. apply后面的参数可以是一个类数组,甚至一个只包含length属性的对象

    3. 生成数组之后,slice按照索引切割,返回数组作为一项


    出处:https://segmentfault.com/a/1190000007464770

  • 相关阅读:
    Largest Submatrix of All 1’s
    Max Sum of Max-K-sub-sequence
    Sticks Problem
    Splay模版
    B. Different Rules
    链表合并 leetcode
    K个一组翻转链表
    反转链表2 leetcode
    nodejs简单仿apache页面
    HTML 5 Web Workers
  • 原文地址:https://www.cnblogs.com/mengff/p/9772305.html
Copyright © 2011-2022 走看看