Day1 计数器
闭包
创建 Hello World 函数
闭包
Day2 计数器 II
闭包
转换数组中的每个元素
数组转换
Day3 过滤数组中的元素
数组转换
数组归约运算
数组转换
Day4 复合函数
输入输出
只允许一次函数调用
输入输出
Day5-可以多回顾一下 记忆函数
输入输出
柯里化
输入输出
↑这个需要会员,我没做,不过看了一些柯里化函数的使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 function add (a, b, c ) { return a + b + c } function curry (func ) { return function curried (...args ) { if (func.length <= args.length ) { return func (...args) } else { return function (...nextArgs ) { return curried (...args, ...nextArgs) } } } } const curried = curry (add)console .log (curried (1 )(2 )(3 ))
Day6-promise需要多回顾 睡眠函数
Promise (异步)
有时间限制的 Promise 对象
Promise (异步)
Day7-promise、延时器 Promise 对象池
Promise (异步)
又是一个会员专享。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 const promisePool = []function asyncOperation ( ) { return new Promise (res => { setTimeout (() => { return res ('花1秒 创建了一个新的Promise' ) }, 1000 ) }) } function getPromiseFromPool ( ) { if (promisePool.length > 0 ) { return promisePool.pop () } else { return asyncOperation () } } function recyclePromise (promise ) { promisePool.push (promise) } function performAsyncOperation ( ) { const promise = getPromiseFromPool () promise.then (res => { console .log (res) recyclePromise (promise) }) } performAsyncOperation ()performAsyncOperation ()
有时间限制的缓存
Time
这个真的很有意思,直接把延时器作为对象中元素存入到了map中。这样一来,就可以轻松处理过期删除问题了!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 var TimeLimitedCache = function ( ) { this .map = new Map () }; TimeLimitedCache .prototype .set = function (key, value, duration ) { let existed = this .map .has (key) if (existed) { let temp = this .map .get (key) clearTimeout (temp.timer ) } let timer = setTimeout (() => { this .map .delete (key) }, duration) this .map .set (key, { value : value, timer : timer }) return existed }; TimeLimitedCache .prototype .get = function (key ) { let existed = this .map .has (key) if (existed) { return this .map .get (key).value } else { return -1 } }; TimeLimitedCache .prototype .count = function ( ) { return this .map .size };
Day8 函数防抖
Time
使用延时器实现一个简单的防抖效果。
节流
Time
又是个会员题。。。我去自己找点节流题做好了。。。找不到,自己实现一个吧!
1 2 3 4 5 6 7 8 9 10 11 12 function throttled (fn, delay ) { let timer = null let func = this return function (...args ) { if (!timer) { timer = setTimeout (() => { fn.apply (func, args) timer = null }, delay) } } }
Day9 完全相等的 JSON 字符串
将对象转换为 JSON 字符串
这俩全是会员题。。。。
JSON / 递归 / 相关实现常见业务函数方法
Day10 将对象数组转换为矩阵
两个对象之间的差异
这俩也是。。。
自学自码
Day11 分块数组
扁平化嵌套数组
诶嘿最喜欢的凹双百了,时间和内存均100%
Day12-原型 数组原型对象的最后一个元素
分组
对象引用(原型链)
Day13-原型 检查是否是类的对象实例
使用自定义上下文调用函数
对象引用(原型链)
Day14-有趣 生成斐波那契数列
嵌套数组生成器
Generators(生成器)