js
mmzzll2019
这个作者很懒,什么都没留下…
展开
-
前端实现一个异步的promise
面试经常被问道怎么实现Promise,下面我们来实现一个Promise。我在网上搜索了一堆实现方案,总感觉有些不符合我的期望,下面是我的一些参考的实现方案:1. https://www.jianshu.com/p/43de678e918a2. https://segmentfault.com/a/1190000016550260MDN上的Promise文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Globa原创 2021-06-06 00:21:52 · 284 阅读 · 1 评论 -
计算两个字符串的最长相同子串
两个字符串,怎么求出它们的最长相同子串呢?最简单的方法是取较短的字符串,由长到短地枚举所有可能的子串,用这些子串去匹配较长的字符串,若是匹配成功,则说明这就是它们的最长相同子串。下面是我的实现,具体案例点击这里const computeMaxStr = (str1, str2) => { const s1 = str1 || ""; const s2 = str2 || ""; let max = s1; let min = s2; if (s2.length > s1.原创 2021-05-18 11:26:10 · 1047 阅读 · 0 评论 -
js从0开始实现大整数加法
如果两个整数太大,超过了 2^52 - 1 的时候,做加法时,会出现精度损失的现象,这时候可以直接利用js提供bigInt类型来做加法,这里就不再赘述了。我这里是用字符串来输出做加法的结果,通过拆分数字来实现无精度损失的加法运算。具体实现如下:function sum(a, b, step = 9){ const ar1 = splitNumber(a, step) const ar2 = splitNumber(b, step) if (ar1[0] !== ar2[原创 2021-05-07 16:44:44 · 204 阅读 · 0 评论 -
js浅拷贝和深拷贝的方法和坑
在c语言中有指针这个概念,浅拷贝的概念有点类似于引用指针。对于普通的Boolean、String和Number不是通过new关键字产生的来说,深拷贝和浅拷贝没有区别。const shallowCopyStrNumBool = (origin) => { return origin;}const deepCopyStrNumBool = (origin) => { if (...原创 2019-04-22 18:37:35 · 209 阅读 · 0 评论 -
递归优化
先来看下斐波那契数列的递推公式: f[0]=1, f[1]=1, f[n]=f[n-1] + f[n-2](n>=2且n是整数)。很容易写出下列代码: const fabo = (n) => { if (n === 0 || n === 1) return 1; return fabo(n-2) + fabo(n-1); }稍微分析一下,就可以知道,这段代码存在大量的...原创 2019-05-09 19:04:53 · 441 阅读 · 0 评论 -
自定义事件
查阅文档https://developer.mozilla.org/zh-CN/docs/Web/API/CustomEvent发现可以使用CustomEvent自定义事件。下面基于react-hook实现一个自定义事件example。export const CustomEventHookTest = () => { const evt = useMemo(() => { ...原创 2019-05-07 23:16:56 · 135 阅读 · 0 评论