🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 思源笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

功能 - 函数从左到右执行

2020-01-21 描述对集合中的函数从左到右依次执行。提示使用 Array.prototype.reduce()从左到右依次执行集合中的函数第一个(最左边)的函数可以接受一个或者多个参数剩余的函数只能接受上一个函数的执行的结果作为参数代码 constcomposeRight=(...fns)=>fns.reduce((f,g)=>(...args)=>g(f(...args)));示例先加再乘:con

功能 - 函数从右到左执行

2020-01-20 描述对集合中的函数从右到左依次执行。提示使用 Array.prototype.reduce()从右到左依次执行集合中的函数最后一个(最右边)的函数可以接受一个或者多个参数剩余的函数只能接受上一个函数的执行的结果作为参数代码 constcompose=(...fns)=>fns.reduce((f,g)=>(...args)=>f(g(...args)));示例先乘再加:constad

功能 - 异步函数链

2020-01-19 描述创建一个异步函数链。提示对一个数组中包含异步事件的函数进行遍历当每一个异步函数事件完成时调用 next 代码 constchainAsync=fns=>{letcurr=0;constlast=fns[fns.length-1];constnext=()=>{constfn=fns[curr++];fn===last?fn():fn(next);};next();};示例每隔一秒输

功能 - 函数上下文绑定

2020-01-17 描述创建一个函数,让其使用给定的上下文来调用 fn,并且可以在最终参数之前可选的为 fn 添加任意提供的额外参数。提示返回一个使用 Function.prototype.apply()让 fn 上下文为给定的 context 的函数使用扩展运算符将额外提供的任意参数添加到最终参数之前代码 constbind=(fn,context,...boundArgs)=>(...args)=>fn.appl

功能 - 解构柯里化函数

2020-01-16 描述将一个深度为 n 的柯里化函数进行解构。提示返回一个可变的函数为提供的参数使用 Array.prototype.reduce(),让其可以逐层调用每一层的柯里化函数如果提供的参数 length 小于 n 的话则抛出一个错误使用 Array.prototype.slice(0,n)获取符合要求的所有参数,使其作为 fn 的参数进行调用第二个参数 n 的默认值为 1,表示只进行一层解构代码 constunc

功能 - 睡眠

2020-01-15 描述延迟执行一个异步函数。提示在一个 async 函数中,延迟运行后续部分的代码通过返回一个含有 setTimeout 的 Promise 来进行睡眠代码 constsleep=ms=>newPromise(resolve=>setTimeout(resolve,ms));示例 1 秒后再输出另一个日志:asyncfunctionsleepyWork(){console.log("I'mgoing

功能 - 重复调用函数

2020-01-14 描述使用迭代函数和初始值构建一个数组。提示使用 while 循环和 Array.prototype.push()重复的调用函数,直到返回 false 迭代函数只接受一个参数 seed,他每次运行后要么返回包含两个元素的数组[value,nextSeed],要么返回终止标志 false 代码 constunfold=(fn,seed)=>{letresult=[],val=[null,seed];w

功能 - 函数聚合

2020-01-13 描述接受一个聚合函数和一个使用列表保存的分支函数作为参数,每一个分支函数都使用相同的参数进行运行,并将运行结果展开作为聚合函数的参数,最终返回该聚合函数运行的结果。提示使用 Array.prototype.map()和 Function.prototype.apply()让每一个函数都使用传入的参数进行运行使用扩展运算符(...)将所有其他的函数结果做为参数传递给 coverger 代码

Vditor v2.0.15 发布,支持所见即所得编辑模式

简介该版本主要特性如下:支持所见即所得编辑模式添加初始化默认值参数在此感谢 jakekwak 反馈的 bug 和提出的宝贵建议。所见即所得编辑模式是一个才诞生的 👶,在体验上有许多不足,也存在一些 🐛。在使用过程中如有任何问题可在本帖下方留言或到 GitHub 上提 issue,下个版本中会继续进行优化。升级默认的编辑模式由 Markdown 源码变为所见即所得模式,可根据需要对 option.mode 参数进行修改文档更新

功能 - 属性方法绑定

2020-01-10 描述创建一个函数,使其可以调用指定对象中的属性方法,并且还可以支持将后续提供的任意参数作为柯里化函数中的单一参数。提示返回一个使用 Function.prototype.apply()绑定 context[fn]为 context 的 function 使用扩展运算符...展开后续提供的任意参数和单一参数作为 function 中的参数代码 constbindKey=(context,fn,...

功能 - 按顺序运行 Promise

2020-01-09 描述将一个数组中的 Promises 按顺序进行运行。提示使用 Array.prototype.reduce()创建一个 Promise 链当成功调用后,每一次的 promise 都返回下一次的 promise 代码 construnPromisesInSeries=ps=>ps.reduce((p,next)=>p.then(next),Promise.resolve());示例按顺序打印出延迟的

功能 - 属性检测

2019-12-18 描述传入一个 predicate 函数和一个 prop 字符串,然后使用柯里化函数将通过属性调用检查的 object 传递给 predicate。提示获取 obj 对象中的 prop 值将获取的值传递给已提供好的 predicate 函数最终返回该函数的真假值代码 constcheckProp=(predicate,prop)=>obj=>!!predicate(obj[prop]);示例检测对象的长度是否

日期 - 一年中的第几天

2020-01-08 描述从一个 Date 对象中获取该日期位于一年中的第几天。提示使用 newDate()和 Date.prototype.getFullYear()获取传入的 Date 对象的第一天用提供的 date 减去上一步获取的当年的第一天对象,然后再除以每一天的毫秒数,以获取当年的天数使用 Math.floor()将获取的天数进行四舍五入以得到一个恰当的整数代码 constdayOfYear=date=>Ma

日期 - 是否为同一个日期

2020-01-08 描述检查一个日期是否和另外一个日期的相同。提示使用 Date.prototype.toISOString()和严格的全等号===来检测第一个日期是否和第二个日期一样代码 constisSameDate=(dateA,dateB)=>dateA.toISOString()===dateB.toISOString();示例输入两个日期,第一个日期是否和第二个日期相等:isSameDate

日期 - 一个日期是否在另一个日期之前

2020-01-06 描述检查一个日期是否在另外一个日期的前面。提示传入两个参数,检测第一个日期是否在第二个日期之前使用大于运算符(<)来进行检查代码 constisBeforeDate=(dateA,dateB)=>dateA<dateB;示例输入两个日期,第一个日期是否在第二个日期之后:isBeforeDate(newDate(2020,01,02),newDate(2020,01,03));//t

日期 - 一个日期是否在另一个日期后面

2020-01-03 描述检查一个日期是否在另外一个日期的后面。提示传入两个参数,检测第一个日期是否在第二个日期之后使用大于运算符(>)来进行检查代码 constisAfterDate=(dateA,dateB)=>dateA>dateB;示例输入两个日期,第一个日期是否在第二个日期之后:isAfterDate(newDate(2020,01,02),newDate(2020,01,03));//fal

日期 - 计算两个日期之间相差的天数

2020-01-02 描述放回两个日期中相差的天数。提示两个 Date 对象相减获取相差的毫秒把相差的毫秒兑换为天数代码 constgetDaysDiffBetweenDates=(dateInitial,dateFinal)=>(dateFinal-dateInitial)/(1000*3600*24);示例 B3log 想法距今有多少天了:getDaysDiffBetweenDates(newDate('2

日期 - 获取明天的日期

2019-12-31 描述返回一个字符串,用于展现明天的日期。提示使用 newDate()获取当前的时间使用 Date.getDate()来往后增加一天使用 Date.setDate()设置结果使用 Date.prototype.toISOString()返回 yyyy-mm-dd 格式的字符串代码 consttomorrow=()=>{lett=newDate();t.setDate(t.getDate()+1)

日期 - 获取时分秒

2019-12-30 描述根据 Date 对象返回一个格式为 HH:MM:SS 的字符串提示使用 Date.prototype.toTimeString()和 String.prototype.slice()获取 Date 对象中的 HH:MM:SS 的部分代码 constgetColonTimeFromDate=date=>date.toTimeString().slice(0,8);示例获取当前的时分秒:getColo

日期 - 返回数值最小的日期

2019-12-27 描述从给定的日期中返回最小的一个。提示在 Math.max 使用 ES6 的展开语法找到最小的 date 值使用 newDate()将最大值转换为 Date 对象代码 constminDate=dates=>newDate(Math.min(...dates));示例从数组中找出最新的一天:constarray=[newDate('2009-12-09'),newDate('2017-4-13'),