资讯专栏INFORMATION COLUMN

lodash数组篇之1 chunk()

cangck_X / 2747人阅读

摘要:最近打算去研究下的源码,准备把大部分方法都实现一遍。先自己写,然后在对照源码。第一个是将数组拆分成多个长度的区块,并将这些区块组成一个新数组。

最近打算去研究下lodash的源码,准备把大部分方法都实现一遍。先自己写,然后在对照源码。
第一个是 chunk

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

下面是自己实现的方法

    chunk:(array,size) =>{
        size = parseInt(size)
        if(size <= 0) {
            return array
        }
        let newArray =[]
        //先算出有几个子数组,然后再根据size值从array里面提取子数组
        let groupSize = Math.ceil(array.length/size)
        for(let i=0; i< groupSize;i++) {
            newArray.push(array.slice(i*size,(i+1)*size))
        }
        return newArray
    }    

然后是lodash实现的chunk函数

function chunk(array, size) {
  size = Math.max(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))

  while (index < length) {
    result[resIndex++] = slice(array, index, (index += size))
  }
  return result
}

loadsh实现的chunk 更加严谨一些,对array和size做了判断 如果数组为空或者size < 1 就 return 出一个空数组
然后是对Math.max()的使用,本来这个方法是返回列表中的最大值,把其中一个值固定为0,另外一个无论传什么数字,这个方法返回的最小值都是0。
用Math.ceil(array.length/size)得到新数组的长度,这个想法是一样的

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/105446.html

相关文章

  • lodash数组篇之2 compact()

    摘要:创建一个新数组,包含原数组中所有的非假值元素。例如和都是被认为是假值。 创建一个新数组,包含原数组中所有的非假值元素。例如false, null, 0, , undefined, 和 NaN 都是被认为是假值。 以下是自己实现的compact() compact:(array)=>{ let result = [] //判断参数是否是数组 如果不是...

    robin 评论0 收藏0
  • lodash数组篇之3 concat( )

    摘要:是一个包含了所有参数的类数组对象,比如说第一个参数可以通过获取。可能是和一样的原因,由于箭头函数的原因,指向了父级作用域。参数搭配的变量是一个数组,该变量将多余的参数放入数组中。 创建一个新数组,将array与任何数组 或 值连接在一起 自行实现 concat:function(){ let length = arguments.length let re...

    韩冰 评论0 收藏0
  • Lodash源码讲解-chunk函数

    摘要:原文首发于源码讲解这是我们阅读源码的第篇博客,在这篇文章里我们来学习一下的方法。好啦,关于函数暂时就先讲到这里啦。与恶龙缠斗过久自身亦成为恶龙凝视深渊过久深渊将回以凝视。 原文首发于Lodash源码讲解 这是我们阅读Lodash源码的第2篇博客,在这篇文章里我们来学习一下Lodash的chunk方法。 chunk函数内部依赖其他的函数,依赖的函数如下所示; slice 按照惯例,我们先...

    ISherry 评论0 收藏0
  • lodash源码分析之chunk的尺与刀

    摘要:万条数据依赖读源码之从看稀疏数组与密集数组原理的原理归结起来就是切割和放置。尺在切割之前,需要用尺确定切割的数量。容器的长度刚好与块的数量一致。当与块的数量相等时,表示已经切割完毕,停止切割,最后将结果返回。 以不正义开始的事情,必须用罪恶使它巩固。——莎士比亚《麦克白》 最近很多事似乎印证了这句话,一句谎言最后要用一百句谎言来圆谎。 本文为读 lodash 源码的第二篇,后续文章会...

    ZweiZhao 评论0 收藏0
  • Lodash学习笔记 - chunk函数

    摘要:文档地址中文文档英文文档源码地址将数组拆分成多个长度的区块,并将这些区块组成一个新数组。如果无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。 百忙之中(闲来无事)想抽点时间好好读一下源码,于是就选了Lodash来写一个系列罢。读源码顺序就按照loadsh文档顺序来。 文档地址:中文文档   英文文档源码地址:gayhub _.chunk(array, [size...

    DrizzleX 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<