前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES6语法翻译Lodash计划:数组篇第1期

ES6语法翻译Lodash计划:数组篇第1期

作者头像
JowayYoung
发布2020-04-01 17:01:41
4490
发布2020-04-01 17:01:41
举报
文章被收录于专栏:JowayYoung谈前端JowayYoung谈前端

计划

ES6语法翻译Lodash计划是本人为自己制定的半年Flag?。

目的是使用ES6语法实现Lodash的单个函数功能,每次分享两个Lodash函数的翻译,涉及到Lodash的类型字符数值数组对象函数集合工具?。

使用ES6语法翻译Lodash的过程中,有些函数会在ES5语法中存在原型参照,有些比较复杂的函数会翻译成简洁版函数,有些函数可能存在翻译不完整的问题?。

我在自己掘金博客JowayYoung』(快点关注哟)的沸点列表下每天提前更新,然后收集各位大神们在评论下的方案,供大家一起学习!

Chunk函数

  • 功能:分割数组
  • 描述:将数组分割成多个指定长度的区块,返回由区块组成的新数组

在线演示

其他大神贡献的方案

代码语言:javascript
复制
function Chunk1(array = [], size = 1) {
    return array.length ? [array.slice(0, size), ...Chunk1(array.slice(size), size)] : [];
}
代码语言:javascript
复制
function Chunk2(array = [], size = 1) {
    return array.reduce((t, c) => { t[t.length - 1].length === size ? t.push([c]) : t[t.length - 1].push(c); return t; }, [[]]);
}
代码语言:javascript
复制
function Chunk3(array = [], size = 1) {
    return Array.from({ length: Math.ceil(array.length / size) }, (v, i) => array.slice(i * size, i * size + size));
}
代码语言:javascript
复制
function Chunk4(array = [], size = 1) {
    return array.reduce((t, c) => {
        const last = t[t.length - 1];
        last && last.length < size ? last.push(c) : t.push([c]);
        return t;
    }, []);
}

备注:大神们都挺厉害的,都是一个嵌套就搞掂,我学到了

Compact函数

  • 功能:移除数组中的假值
  • 描述:将数组中的假值(undefinednull""0falseNaN)移除,返回由剩余非假值组成的新数组

在线演示

备注:这个应该是最简单的实现方式,没有之一了

结语

这个ES6语法翻译Lodash计划只是我其中一个比较独特的想法,仅供学习交流拓展思维所用,不是什么特别的标准。

如果大家有想法,欢迎在下方评论或者去我掘金博客JowayYoung』对应的沸点下评论喔!贴上你的代码,我们一起学习一起进步!

关注公众号Uzero,更多前端小干货等着你喔!我是JowayYoung,喜欢分享前端技术和生活纪事,学习与生活不落下,每天进步一点点,与大家相伴成长

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IQ前端 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 计划
  • Chunk函数
  • Compact函数
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档