近期在GitHub上看到一位叫Chalarangelo的用户写了一篇30 秒就能理解的 JavaScript 代码片段,很多人都在看,下面分享一些他的JS用法。

给定一个 key 和一个 set 作为参数,给定上下文时调用它们。主要用于函数组合。使用闭包以存储的参数调用存储的 key 。

const call = (key, ...args) => context => context[key](...args);

将接受数组的函数改变为可变参数函数。给定一个函数,返回一个闭包,将所有输入收集到一个接受函数的数组中。

const collectInto = fn => (...args) => fn(args);

flip 接受一个函数参数,然后将该函数第一个参数作为最后一个参数。返回一个接受可变参数输入的闭包,并且在应用其余参数之前将最后一个参数作为第一个参数。

const flip = fn => (...args) => fn(args.pop(), ...args);

执行从左到右的函数组合。使用Array.reduce()与展开操作符(...)来执行从左到右的函数组合。第一个(最左边的)函数可以接受一个或多个参数;其余的函数必须是一元函数。

const pipeFunctions = (...fns) => fns.reduce((f, g) => (...args) => g(f(...args)));

转换一个异步函数,以返回一个 promise 。使用柯里化返回一个函数,这个函数返回一个调用原始函数的 Promise 。 使用 ...rest 运算符传入所有参数。

const promisify = func => (...args) =>
 new Promise((resolve, reject) =>
   func(...args, (err, result) => (err ? reject(err) : resolve(result)))
 );

接受一个可变参数函数并返回一个闭包,该闭包接受一个参数数组映射到该函数的输入。使用闭包和展开运算符 (...) 将参数数组映射到函数的输入。

const spreadOver = fn => argsArr => fn(...argsArr);

把一个数组分块成指定大小的小数组。使用

Array.from() 创建一个新的数组,它的长度就是生成 chunk(块) 的数量。 使用 Array.slice() 将新数组的每个元素映射到长度为 size 的 chunk 中。 如果原始数组不能均匀分割,最后的 chunk 将包含剩余的元素。

const chunk = (arr, size) =>
 Array.from({ length: Math.ceil(arr.length / size) }, (v, i) =>
   arr.slice(i * size, i * size + size)
 );

从数组中移除 falsey 值元素。使用 Array.filter() 过滤掉数组中所有 假值元素(false, null, 0, "", undefined, 和 NaN)。

const compact = arr => arr.filter(Boolean);

计算数组中值的出现次数。每次遇到数组中的某个特定值时,使用 Array.reduce() 来递增计数器。

const countOccurrences = (arr, value) => arr.reduce((a, v) => (v === value ? a + 1 : a + 0), 0);

深度平铺一个数组。使用递归。 通过空数组([]) 使用 Array.concat() ,结合 展开运算符( ... ) 来平铺数组。 递归平铺每个数组元素。

const deepFlatten = arr => [].concat(...arr.map(v => (Array.isArray(v) ? deepFlatten(v) : v)));

原文地址:https://github.com/Chalarangelo/30-seconds-of-code

译文地址:http://www.css88.com/30-seconds-of-code/

JavaScript 代码片段相关推荐

  1. 收集 48 个 JavaScript 代码片段,仅需 30 秒就可理解(值得收藏)

    该项目来自于 Github 用户 Chalarangelo,目前已在 Github 上获得了 5000 多Star,精心收集了多达 48 个有用的 JavaScript 代码片段,该用户的代码可以让程 ...

  2. JavaScript代码片段

    简介:本文收集了我常用的JavaScript代码片段,欢迎提意见! 大灰狼边敲门边说:"小兔子乖乖,把门儿开开!" 小兔子听到后,连忙去开门:"来喽!" 兔妈妈 ...

  3. 第一百一十八期:运行 JavaScript 代码片段的 20 种工具

    运行 JavaScript 代码片段的 20 种工具 前端日常开发中,我们使用喜爱的 IDE 调试 JavaScript 代码,比如我喜欢的代码编辑器有两个,Sublime Text 3 和 VS C ...

  4. 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 该项目来自于 Github 用户 Chalarangelo,目前已在 Github 上获得了 ...

  5. 【JS】1070- 8个工程必备的JavaScript代码片段(建议添加到项目中)

    8个工程必备的JavaScript代码片段,听过这样起博客标题可以提高阅读量.???? 最近写博客好累,让8月征文活动搞的,今天水一篇好了,麻烦不要给我点赞,不想看到消息通知的小红点. 1. 获取文件 ...

  6. 16个工程必备的JavaScript代码片段

    作者:_红领巾 https://juejin.cn/post/7000919400249294862 1. 下载一个excel文档 同时适用于word,ppt等浏览器不会默认执行预览的文档,也可以用于 ...

  7. 8个工程必备的JavaScript代码片段(建议添加到项目中)

    点击上方 前端瓶子君,关注公众号 回复算法,加入前端编程面试算法每日一题群 8个工程必备的JavaScript代码片段,听过这样起博客标题可以提高阅读量.???? 最近写博客好累,让8月征文活动搞的, ...

  8. angular 多个片段拼接_10个JavaScript代码片段,帮助你成为更好的开发者

    毫无疑问,JavaScript是Web开发中最流行的编程语言之一.无论你使用的是React,Vue还是Angular,它们都属于JavaScript.JS围绕着广阔而至关重要的生态系统发展,提供了许多 ...

  9. 加入收藏代码_100个原生JavaScript代码片段知识点详细汇总【实践】

    作者:小棋子js 转发链接:https://www.jianshu.com/p/b5171efa340f JavaScript 是目前最流行的编程语言之一,正如大多数人所说:"如果你想学一门 ...

最新文章

  1. 把文件夹下的所有文件打包成一个zip包
  2. 实现WIFI客户端上网设置说明
  3. mac GitHub上面如何在原有仓库的基础上增加文件呢?
  4. 看见到洞见之引子(一)机器学习算法
  5. python mockito arg_that_wqingxiao
  6. css设置打印样式表,[CSS] 创建打印样式表
  7. 联通突然从4g变成3g了_联通正式关闭2G、3G服务?官方回应:是用户手机的问题...
  8. javax.net.ssl.SSLException: closing inbound before receiving peer‘s close_notif---SpringCloud工作笔记111
  9. 阿里 90 后科学家研发,达摩院开源新一代 AI 算法模型
  10. 【工大SCIR Lab】AAAI20 基于关键词注意力机制和回复弱监督的医疗对话槽填充研究...
  11. python os模块
  12. AD9 设置网络标号作用域 (NET 全局)
  13. 小程序如何生成海报分享朋友圈
  14. 计算机信息安全认识实习报告
  15. ubuntu16.04+cuda8.0安装pytorch
  16. 电平转换小结(避免翻车指南)
  17. Java-AQI计算
  18. SQL注入漏洞(postgresql注入)
  19. Python画皮卡丘(自创)
  20. 137.Linux输入子系统基本概念

热门文章

  1. 面向自动驾驶行业,Imagination推出性能高达600 TOPS的多核AI加速器
  2. 一张图搞懂 Redis 缓存雪崩、缓存穿透、缓存击穿
  3. 实战 | 对抗外部威胁防护和勒索病毒,大厂怎么做?
  4. 阿里巴巴创始人马云持股降至 4.8%;传小冰将从微软分拆,沈向洋“回归”;Electron 8.4.0 发布| 极客头条
  5. 数据科学家在“新常态”下发生了怎样的转变?
  6. 祝贺 Java 走过创新的 25 年
  7. 自动驾驶即将迎来下一个飞跃?
  8. 全国首个凭“码”出行城市,深圳全面实施人员通行认证管理
  9. Android 设备上可以实现 3D Touch 吗?| 原力计划
  10. 科大讯飞交通超脑荣获 2019 年大数据应用最佳实践案例 TOP10