JavaScript 代码片段
近期在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 代码片段相关推荐
- 收集 48 个 JavaScript 代码片段,仅需 30 秒就可理解(值得收藏)
该项目来自于 Github 用户 Chalarangelo,目前已在 Github 上获得了 5000 多Star,精心收集了多达 48 个有用的 JavaScript 代码片段,该用户的代码可以让程 ...
- JavaScript代码片段
简介:本文收集了我常用的JavaScript代码片段,欢迎提意见! 大灰狼边敲门边说:"小兔子乖乖,把门儿开开!" 小兔子听到后,连忙去开门:"来喽!" 兔妈妈 ...
- 第一百一十八期:运行 JavaScript 代码片段的 20 种工具
运行 JavaScript 代码片段的 20 种工具 前端日常开发中,我们使用喜爱的 IDE 调试 JavaScript 代码,比如我喜欢的代码编辑器有两个,Sublime Text 3 和 VS C ...
- 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!
点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 该项目来自于 Github 用户 Chalarangelo,目前已在 Github 上获得了 ...
- 【JS】1070- 8个工程必备的JavaScript代码片段(建议添加到项目中)
8个工程必备的JavaScript代码片段,听过这样起博客标题可以提高阅读量.???? 最近写博客好累,让8月征文活动搞的,今天水一篇好了,麻烦不要给我点赞,不想看到消息通知的小红点. 1. 获取文件 ...
- 16个工程必备的JavaScript代码片段
作者:_红领巾 https://juejin.cn/post/7000919400249294862 1. 下载一个excel文档 同时适用于word,ppt等浏览器不会默认执行预览的文档,也可以用于 ...
- 8个工程必备的JavaScript代码片段(建议添加到项目中)
点击上方 前端瓶子君,关注公众号 回复算法,加入前端编程面试算法每日一题群 8个工程必备的JavaScript代码片段,听过这样起博客标题可以提高阅读量.???? 最近写博客好累,让8月征文活动搞的, ...
- angular 多个片段拼接_10个JavaScript代码片段,帮助你成为更好的开发者
毫无疑问,JavaScript是Web开发中最流行的编程语言之一.无论你使用的是React,Vue还是Angular,它们都属于JavaScript.JS围绕着广阔而至关重要的生态系统发展,提供了许多 ...
- 加入收藏代码_100个原生JavaScript代码片段知识点详细汇总【实践】
作者:小棋子js 转发链接:https://www.jianshu.com/p/b5171efa340f JavaScript 是目前最流行的编程语言之一,正如大多数人所说:"如果你想学一门 ...
最新文章
- 把文件夹下的所有文件打包成一个zip包
- 实现WIFI客户端上网设置说明
- mac GitHub上面如何在原有仓库的基础上增加文件呢?
- 看见到洞见之引子(一)机器学习算法
- python mockito arg_that_wqingxiao
- css设置打印样式表,[CSS] 创建打印样式表
- 联通突然从4g变成3g了_联通正式关闭2G、3G服务?官方回应:是用户手机的问题...
- javax.net.ssl.SSLException: closing inbound before receiving peer‘s close_notif---SpringCloud工作笔记111
- 阿里 90 后科学家研发,达摩院开源新一代 AI 算法模型
- 【工大SCIR Lab】AAAI20 基于关键词注意力机制和回复弱监督的医疗对话槽填充研究...
- python os模块
- AD9 设置网络标号作用域 (NET 全局)
- 小程序如何生成海报分享朋友圈
- 计算机信息安全认识实习报告
- ubuntu16.04+cuda8.0安装pytorch
- 电平转换小结(避免翻车指南)
- Java-AQI计算
- SQL注入漏洞(postgresql注入)
- Python画皮卡丘(自创)
- 137.Linux输入子系统基本概念
热门文章
- 面向自动驾驶行业,Imagination推出性能高达600 TOPS的多核AI加速器
- 一张图搞懂 Redis 缓存雪崩、缓存穿透、缓存击穿
- 实战 | 对抗外部威胁防护和勒索病毒,大厂怎么做?
- 阿里巴巴创始人马云持股降至 4.8%;传小冰将从微软分拆,沈向洋“回归”;Electron 8.4.0 发布| 极客头条
- 数据科学家在“新常态”下发生了怎样的转变?
- 祝贺 Java 走过创新的 25 年
- 自动驾驶即将迎来下一个飞跃?
- 全国首个凭“码”出行城市,深圳全面实施人员通行认证管理
- Android 设备上可以实现 3D Touch 吗?| 原力计划
- 科大讯飞交通超脑荣获 2019 年大数据应用最佳实践案例 TOP10