工具函数

常用工具函数

1.
抽象工厂模式

创建一系列相关对象的设计模式实现

2.
Adapter Pattern

适配器模式的实现与应用场景

3.
Adapter Pattern

适配器模式的实现与应用场景

4.
实现一个支持柯里化的 add 函数

实现一个灵活的 add 函数,支持多种调用方式和参数累加

5.
计算两个数组的交集

实现一个函数来计算两个数组的交集,返回两个数组中共同存在的元素

6.
数组中的数据根据key去重

实现一个函数,对数组中的对象根据指定的key进行去重,保留第一个或最后一个出现的元素

7.
实现一个add方法完成两个大数相加

使用字符串模拟竖式加法,解决JavaScript中超出安全整数范围的大数相加问题

8.
大数相加

使用 BigInt 和字符串模拟实现大数相加

9.
bind、call、apply 的区别与实现

理解三种改变 this 指向的方法,并手写实现 bind

10.
Bridge Pattern

桥接模式的实现与应用场景

11.
Builder Pattern

用建造者模式分步构建复杂对象

12.
实现一个管理本地缓存过期的函数

封装 localStorage,实现带过期时间的本地缓存管理功能

13.
缓存代理

使用代理模式缓存函数计算结果,避免重复计算

14.
转化为驼峰命名

实现将字符串(如下划线、中划线命名)转换为驼峰命名格式的函数

15.
实现 (5).add(3).minus(2) 功能

通过扩展 Number 原型实现链式调用的加减运算功能

16.
咖啡机进阶优化

使用设计模式优化咖啡机代码,实现装饰器和建造者模式

17.
咖啡机状态管理

用状态机模式实现咖啡机的状态流转

18.
常用设计模式总结

前端开发中常用的设计模式及使用场景

19.
咖啡机状态切换机制

用状态模式改造咖啡机的状态管理

20.
查找数组公共前缀(美团)

实现一个函数,找出字符串数组中所有字符串的最长公共前缀

21.
实现一个compose函数

实现函数组合工具,将多个函数从右到左依次执行,前一个函数的返回值作为后一个函数的参数

22.
并发请求调度器

实现限制并发数量的请求调度器

23.
组合模式

用树形结构表示部分-整体关系,统一处理单个对象和组合对象

24.
实现 console.log 代理方法

定义 log 方法代理 console.log,支持参数透传

25.
Decorator Pattern

装饰器模式的实现与应用场景

26.
实现防抖和节流

手写防抖和节流函数

27.
实现一个JS函数柯里化

手写实现函数柯里化,将多参数函数转换为单参数函数的嵌套调用形式

28.
实现防抖函数(debounce)

手写一个防抖函数,用于限制高频触发的事件,只在最后一次触发后执行

29.
Decorator Pattern

装饰者模式的实现与应用

30.
手写深度比较isEqual

实现一个深度比较函数,判断两个值是否完全相等,支持对象、数组、基本类型等多种数据类型的比较

31.
消除 if-else 条件判断

用策略模式、对象映射等方式优化冗长的条件判断

32.
修改嵌套层级很深对象的 key

实现一个函数,能够递归遍历深层嵌套对象,修改指定的 key 名称

33.
设计模式应用

前端开发中常用的设计模式及实际应用场景

34.
验证是否是邮箱

使用正则表达式验证字符串是否符合邮箱格式的多种实现方法

35.
实现发布订阅模式

手写 Event Bus / EventEmitter

36.
外观模式

用统一接口简化复杂子系统的调用

37.
Facade Pattern

外观模式的实现与应用场景

38.
Factory Pattern

JavaScript 工厂模式的实现与应用

39.
工厂模式

JavaScript 中工厂模式的实现与应用场景

40.
工厂模式实现

JavaScript 中三种工厂模式的实现与应用场景

41.
Flyweight Pattern

享元模式的实现与应用场景

42.
前端常用设计模式与场景

单例、观察者、策略、代理等设计模式在前端的实现与应用

43.
提取对象中所有value大于2的键值对

实现一个方法,从对象中筛选出值大于2的键值对,并返回新对象

44.
用正则实现根据name获取cookie中的值

通过正则表达式解析document.cookie字符串,实现根据cookie名称获取对应值的方法

45.
获取今天的日期

使用 JavaScript Date 对象获取并格式化当前日期

46.
ES6 之前的迭代器模式

JavaScript 在 Iterator 出现前如何实现迭代

47.
实现 getValue/setValue 函数来获取path对应的值

通过路径字符串安全地获取和设置对象深层嵌套属性的值

48.
验证是否是身份证

实现一个函数来验证中国大陆身份证号码的合法性,包括格式校验和校验码验证

49.
迭代器模式

实现迭代器模式,顺序访问集合元素而不暴露内部结构

50.
jQuery slideUp 动画队列堆积问题

解决鼠标快速触发导致动画滞后反复执行的问题

51.
实现一个JSON.parse

手写实现JSON字符串解析函数,将JSON格式字符串转换为JavaScript对象

52.
实现 LazyMan 任务队列

使用任务队列实现链式调用和延迟执行

53.
实现一个JSON.stringify

手写实现JSON.stringify方法,支持各种数据类型的序列化处理

54.
实现lodash的chunk方法--数组按指定长度拆分

手写实现lodash库中的chunk方法,将数组按照指定长度拆分成多个子数组

55.
字符串最长的不重复子串

使用滑动窗口算法找出字符串中最长的不含重复字符的子串

56.
LRU 缓存算法

实现 Least Recently Used 缓存淘汰策略

57.
查找字符串中出现最多的字符和个数

实现一个函数,找出字符串中出现次数最多的字符及其出现次数

58.
new 操作符的实现原理

理解 new 操作符的执行过程并手写实现

59.
中介者模式

用中介者对象协调多个对象间的通信

60.
中介者模式

通过中介者对象协调多个对象之间的交互

61.
对象数组如何去重

实现对象数组的去重功能,支持多种去重策略和自定义比较规则

62.
千分位格式化

实现数字的千分位分隔显示

63.
实现观察者模式

手写观察者模式并理解其应用场景

64.
观察者模式实例

用生活场景理解观察者模式并实现

65.
观察者模式

实现观察者模式,理解发布-订阅机制

66.
实现观察者模式

手写 JavaScript 观察者模式

67.
实现 padStart() 和 padEnd() 的 Polyfill

手写实现字符串填充方法 padStart 和 padEnd 的 polyfill,用于在字符串开头或末尾填充指定字符

68.
判断是否是电话号码

使用正则表达式验证中国大陆手机号码格式的有效性

69.
Proxy Pattern

JavaScript 代理模式的实现与应用场景

70.
代理模式:婚介所

用婚介所的例子理解和实现代理模式

71.
Proxy Pattern

代理模式的实现与前端应用场景

72.
代理模式

JavaScript 代理模式的实现与应用场景

73.
实现上拉加载和下拉刷新

通过原生 JavaScript 实现移动端上拉加载和下拉刷新功能

74.
生成随机数组并排序

用 JavaScript 生成指定范围的随机数数组并排序

75.
大文件断点续传实现

通过分片上传和断点续传技术实现大文件上传

76.
使用 setInterval 模拟实现 setTimeout

通过 setInterval 的循环特性来模拟 setTimeout 的延迟执行功能,理解定时器的底层原理

77.
重构询价逻辑

使用策略模式重构多条件询价代码

78.
实现一个简单的路由

手写 Hash 路由和 History 路由

79.
setTimeout 模拟实现 setInterval

使用 setTimeout 递归调用的方式来模拟 setInterval 的功能,并解决 setInterval 的一些潜在问题

80.
RGB 转 Hex 颜色转换

实现 RGB 颜色值到十六进制颜色的转换

81.
setTimeout与setInterval实现

手写实现浏览器定时器API setTimeout和setInterval的功能

82.
Simple Factory Pattern

使用工厂函数统一创建不同类型的对象

83.
实现单例模式

手写 JavaScript 单例模式的多种实现方式

84.
实现一个 sleep 函数

手写一个 sleep 函数,实现异步等待指定毫秒数的功能

85.
状态模式

让对象在状态改变时自动切换行为

86.
State Pattern

用状态模式管理对象的状态切换和行为变化

87.
策略模式

用策略模式消除 if-else,实现算法的灵活切换

88.
Strategy Pattern

策略模式的实现与应用场景

89.
Storage 单例封装

用单例模式封装 localStorage 的 setItem 和 getItem 方法

90.
策略模式

用 JavaScript 实现策略模式,消除条件分支

91.
计算字符串字节长度

编写方法计算字符串的字节长度,区分中英文字符

92.
字符串压缩算法实现

根据字符重复次数压缩字符串,如 aabcccccaaa 压缩为 a2b1c5a3

93.
字符串查找

实现在字符串中查找子串位置的功能,类似于 String.prototype.indexOf 方法

94.
字符串去除前后空格

手写 trim 方法清除字符串前后空格

95.
实现模板引擎

手写 Mustache 风格的模板引擎

96.
实现千位分隔符

将数字格式化为千位分隔符形式,如 1234567 转换为 1,234,567

97.
实现模板字符串解析功能

手写实现类似 ES6 模板字符串的解析功能,支持变量插值和表达式计算

98.
实现一个函数判断数据类型

手写一个精确判断 JavaScript 数据类型的工具函数,支持所有常见数据类型的识别

99.
Promise 实现红绿灯交替

使用 Promise 和 setTimeout 实现红绿灯循环亮灯效果

100.
实现节流函数(throttle)

手写实现一个节流函数,控制函数在指定时间内只执行一次,常用于性能优化场景

101.
从指定数据源生成长度为 n 的不重复随机数组

探讨从指定数据源中生成不重复随机数组的多种实现方法及其时间复杂度分析

102.
解析 URL Params 为对象

将 URL 查询参数字符串解析为 JavaScript 对象,支持数组、重复参数等场景

103.
URL 验证

在输入框中判断用户输入是否为有效网址

104.
判断括号字符串是否有效

使用栈数据结构判断字符串中的括号是否匹配有效,支持多种括号类型

105.
虚拟代理

使用虚拟代理实现延迟加载和性能优化

106.
访问者模式

实现访问者模式,分离数据结构与操作

107.
版本号排序的方法

实现一个函数对版本号字符串数组进行正确排序,支持多段版本号比较