函数
手写call
手写bind
手写节流(throttle)
手写防抖(debounce)
手写柯里化(curry)
手写组合(compose)
手写实例化(new)
手写继承(extends)
手写实现一个sleep函数
对象
手写深拷贝(deepClone)
手写let
手写const
手写引用类型判断(instanceof)
实现获取对象指定属性(getValue)
数组
手写数组排序(sort)
手写数组去重(deduplicate)
手写数组拉平(flat)
reduce 实现 map
数组转对象
数组转树(每一项带父级id:pid)
字符串
判断是否回文
字符串反转
大数相加
判断一个字符串是否另一个字符串的子序列
最长公共子串
实现颜色转换 'rgb(255, 255, 255)' -> '#FFFFFF' 的多种思路
获取url参数(getUrlParams)
链表
判断链表是否有环
实现链表反转
栈与队列
使用栈实现队列
判断括号是否是匹配(“(){()[{}]} ()({}) {()}[]{()} [{{[()]}}]”)
树
手写树先序、中序、后序、层序遍历(递归+迭代)
判断平衡二叉树、搜索二叉树、完全二叉树
异步
手写promise
手写promiseAll
手写promiseRace
手写promiseAllSettled
手写并发控制(promiseLimit)
手写重试(promiseRetry)
手写超时(promiseTimeout)
手写jsonp
手写ajax
手写setInterval
手写setTimeout
设计模式
手写单例模式(singleton)
手写观察者模式(observer)
工具
实现一个极简的webpack
实现一个极简的模版引擎
实现一个极简的数据响应式
实现一个自由拖动组件
实现一个多弹窗管理组件
实现一个虚拟列表