Skip to content

_.chunk(array, [size=1]) #2

Open
@JCHappytime

Description

@JCHappytime

1. 作用及使用

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

  1. array:需要处理的数组
  2. [size=1]每个数组区块的长度

2. 示例:

  1. 不传size值
    1

  2. 传size值为2时
    2

3. 源码分析:

function chunk(array, size=1) {
  size = Math.max(toInteger(size), 0);
  const length = array === null ? 0 : array.length;
  if (!length || size < 1) { // 临界值判断
    return [];
  }
  let index = 0;
  let resIndex = 0;
  const result = new Array(Math.ceil(length / size));  // 此处是用array的长度除以size大小,得到能划分出的每个区块的数组的长度
  
  while (index < length) {
    result[resIndex++] = this.slice(array, index, (index += size));
    // 当index小于数组长度时,result数组的resIndex+1位置的值,被赋值为slice()方法分割出来的数组
  }
  return result;
}

这里slice()方法的源码见: slice分析

Metadata

Metadata

Assignees

No one assigned

    Labels

    数组数组相关的操作

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions