debounce 的简单实现

为什么要讲这个话题呢?主要是因为最近很多问题都由这个特性帮我解决了,让我感叹这非常有用。

学习英语是理解编程的第一步。de- 在英语里表示 xx 的反义,比如 defrost(除霜),deactivate(使失活),decentralization(权力分散),那么 debounce 的意思就是防抖/防止弹跳。我们结合实际的例子感性的认识一下。

继续阅读“debounce 的简单实现”

如何编写一个 webpack plugin

本篇文章源自我自己的一个需求:我想看看 webpack 是如何组织 js 代码模块化的。打开编译后的文件有很多注释,不方便查看,我想去掉这些这些注释,那应该怎么做呢?学习写个插件用正则替换这些注释代码。

插件的设计机制一般都是在程序运行的各个阶段提供不同的 hook,传入数据、修改数据,以期得到一个满意的结果,webpack 也不例外。那针对这种场景,应该使用说明钩子函数呢?

继续阅读“如何编写一个 webpack plugin”

工作和生活的情绪应该分开

2020-04-30

2020-04-29

2020-04-28

有一个二维数组如下: let arr = [[“a0”, “a1”], [“a1”, “a2”], [“a3”]]; 我们看到 a1 这个元素在数组的第 0 项和第 1 项都存在了,我们需要将其合并成一项:

// 需要转化成 [[“a0”, “a1”, “a2”], [“a3”]]

同理,针对一个任意项的二维数组,只要其中某单个元素重复了,就应该合并进同一个数组里,减少这个二维数组的个数。那么怎么实现这个呢?

标题:工作中的一个问题之二

内容来自曾小乱的blog:https://zengxiaoluan.com/question-in-working/

继续阅读“工作和生活的情绪应该分开”

工作中的一个问题之二

有一个二维数组如下:

let arr = [["a0", "a1"], ["a1", "a2"], ["a3"]];

我们看到 a1 这个元素在数组的第 0 项和第 1 项都存在了,我们需要将其合并成一项:

// 需要转化成 [["a0", "a1", "a2"], ["a3"]]

同理,针对一个任意项的二维数组,只要其中某单个元素重复了,就应该合并进同一个数组里,减少这个二维数组的个数。那么怎么实现这个呢?

继续阅读“工作中的一个问题之二”

工作中的一个小问题

有一个字符串: a[0:3]bb[-1:9]c[-1:-9]d ,0 对应 a0bb-1c-1d,1 对应 a0bb-1c-2d,2 对应 a0bb-1c-3d,以此类推,那么当 100 应该对应哪个字符串?怎么实现这个转化?

需要注意 2 个地方,一个是 [-10:3] 可以递增,也可以是递减 [3:-10];另一个是这种模式可以无限叠加。

继续阅读“工作中的一个小问题”

三月份的工作紧张

2020-03-31

应该正确使用 label 标签了,虽然我以前用了很长时间理解它。

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label

2020-03-30

学习英语是理解编程的第一步,generator 有发电机的意思,而 yield 有产生的意思,两者结合可以源源不断产生电源,很符合生成器函数的特性。 而利用 generator 处理异步也可以这样写:

标题:generator 和异步回调

内容来自曾小乱的blog:https://zengxiaoluan.com/generator-and-asynchronous-callbacks/#2020-03-30%E6%9B%B4%E6%96%B0

继续阅读“三月份的工作紧张”

partial application

这个概念好像不太好翻译,有人直译为偏应用,对不懂这个概念的人有点一头雾水,不知所云,我来简单理解一下。另外已经有工程师把这个特性提交到了 tc39,说不定不久我们就能在新版谷歌浏览器使用了。

我们有一个求和函数如下:

function foo(a, b, c) { return a + b + c }

当我调用的时候,有个参数我突然不知道传什么,暂时想不传,并用 undefined 来替代。我们当然不能这么写:

foo(undefined,1,2)
继续阅读“partial application”

并查集的正确使用姿势

因为工作的关系,不得不学习了几种算法,好久不用又忘记了,这是一篇复习文章。

并查集回答的是连接问题,比如说从 a 城到 b 城有没有路,能回答有或者没有,但是不能回答具体的路是那几条,该怎么走;再比如说 a、z 这 2 个人能否通过共同好友的名片分享来加上微信。

并查集是解决点与点之间的关系,遇到实际问题的时候,需要我们进行转换成点与点,也就是建模。在数据结构上一般用数组来存储这些点。

继续阅读“并查集的正确使用姿势”

检测无向图有没有闭环

这篇文章来自工作中的一个实际问题:电子工程师在进行电路设计时,一般不用画出有闭环的导线,否则就短路了,这个是没有意义的。为了避免电子工程师的误操作,需要做这么一个防呆的工作。这是一个实际的场景,为了解决这个问题,可以转换成一个图的问题。

先来解释几个概念。

继续阅读“检测无向图有没有闭环”