这个开源项目绝了!30秒就能理解的JavaScript优秀代码

开发 前端
今天要和大家分享一个项目,里面精心收集了大量有用的JavaScript代码片段,让你能够在极短的时间内可以理解使用它们,分为日期、节点、功能模块等部分,你可以直接将文件的这些代码直接导入到你的的文本编辑器(VSCode,Atom,Sublime)。

[[394653]]

今天要和大家分享一个项目,里面精心收集了大量有用的JavaScript代码片段,让你能够在极短的时间内可以理解使用它们,分为日期、节点、功能模块等部分,你可以直接将文件的这些代码直接导入到你的的文本编辑器(VSCode,Atom,Sublime)。

这个项目在Github上十分受欢迎,目前标星 71.3K,累计分支 7.9K(Github地址:https://github.com/30-seconds/30-seconds-of-code)

下面还是一起来看看这个项目里都有哪些代码段吧:

数组:arrayMax

返回数组中的最大值。将Math.max()与扩展运算符 (...) 结合使用以获取数组中的最大值。

const arrayMin = arr => Math.min(...arr); 
// arrayMin([10, 1, 5]) -> 1 
  • 1.
  • 2.

浏览器:bottomVisible

如果页的底部可见, 则返回true, 否则为false。使用scrollY、scrollHeight和clientHeight来确定页面底部是否可见。

const bottomVisible = () => 
document.documentElement.clientHeight + window.scrollY >= document.documentElement.scrollHeight || document.documentElement.clientHeight; 
// bottomVisible() -> true 
  • 1.
  • 2.
  • 3.

日期:getDaysDiffBetweenDates

返回两个日期之间的差异 (以天为值)。计算Date对象之间的差异 (以天为值)。

const getDaysDiffBetweenDates = (dateInitial, dateFinal) => (dateFinal - dateInitial) / (1000 * 3600 * 24); 
// getDaysDiffBetweenDates(new Date("2017-12-13"), new Date("2017-12-22")) -> 9 
  • 1.
  • 2.

函数:chainAsync

链异步函数,循环遍历包含异步事件的函数数组, 当每个异步事件完成时调用next。

const chainAsync = fns => { let curr = 0; const next = () => fns[curr++](next); next(); }; 
/* 
chainAsync([ 
  next => { console.log('0 seconds'); setTimeout(next, 1000); }, 
  next => { console.log('1 second');  setTimeout(next, 1000); }, 
  next => { console.log('2 seconds'); } 
]) 
*/ 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

数学:arrayAverage

返回数字数组的平均值。使用Array.reduce()将每个值添加到累加器中, 并以0的值初始化, 除以数组的length。

const arrayAverage = arr => arr.reduce((acc, val) => acc + val, 0) / arr.length; 
// arrayAverage([1,2,3]) -> 2 
  • 1.
  • 2.

节点:JSONToFile

将 JSON 对象写入文件。使用fs.writeFile()、模板文本和JSON.stringify()将json对象写入.json文件。

const fs = require('fs'); 
const JSONToFile = (obj, filename) => fs.writeFile(`${filename}.json`, JSON.stringify(obj, null, 2)) 
// JSONToFile({test: "is passed"}, 'testJsonFile') -> writes the object to 'testJsonFile.json' 
  • 1.
  • 2.
  • 3.

对象:cleanObj

移除从 JSON 对象指定的属性之外的任何特性。使用Object.keys()方法可以遍历给定的 json 对象并删除在给定数组中不是included 的键。另外, 如果给它一个特殊的键 (childIndicator), 它将在里面深入搜索, 并将函数应用于内部对象。

const cleanObj = (obj, keysToKeep = [], childIndicator) => { 
Object.keys(obj).forEach(key => { 
if (key === childIndicator) { 
cleanObj(obj[key], keysToKeep, childIndicator); 
else if (!keysToKeep.includes(key)) { 
delete obj[key]; 

}) 

/* 
  const testObj = {a: 1, b: 2, children: {a: 1, b: 2}} 
  cleanObj(testObj, ["a"],"children"
  console.log(testObj)// { a: 1, children : { a: 1}} 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

 

以上举的这些示例还只是冰山一角,如果你对这个项目感兴趣就赶紧马克起来。

 

责任编辑:武晓燕 来源: 开源最前线
相关推荐

2021-03-19 09:53:28

Python 开发编程语言

2021-03-29 10:37:35

开源技术 开发

2017-12-14 17:14:32

GithubJavaScript程序员

2020-01-23 15:47:15

编程语言PythonJava

2024-06-24 03:00:00

2017-12-25 11:15:06

JavaArray数组

2019-10-10 16:49:18

Python镜音双子脚本语言

2021-08-07 10:27:52

JVM开源项目

2019-11-13 09:01:48

开源JavaScript模板引擎

2020-07-06 13:30:31

前端开发技术

2021-01-18 10:33:14

后端开源接口

2021-12-12 18:38:31

visio画图工具

2025-01-13 07:10:00

diagrams画图工具draw.io

2023-12-08 13:40:24

HbaseMySQL数据库

2025-01-16 08:50:33

2020-08-20 08:39:54

CTO代码数据

2023-10-10 16:16:05

JavaScrip开发

2022-12-19 15:23:51

JavaScrip开发语言

2023-05-30 15:11:16

JavaScrip开发功能

2023-10-09 14:48:06

点赞
收藏

51CTO技术栈公众号