|
1 | 1 | # awesome-coding-javascript
|
2 | 2 |
|
3 |
| -📌 coding about JavaScript basic principles and data structures and algorithms, verify logic with unit test. |
| 3 | +📌 持续构建个人的源码库,更多信息请看[这篇文章]()。 |
4 | 4 |
|
5 | 5 | [](https://codecov.io/gh/caiyongmin/codes) [](README.md)
|
6 | 6 |
|
7 |
| -**这里得有一个目录** |
| 7 | +--- |
8 | 8 |
|
9 |
| -## JavaScript |
| 9 | +## 一、JavaScript 原生和常用方法的代码实现 |
10 | 10 |
|
11 |
| -- [x] [bind](./src/javascript/bind) |
12 |
| -- [x] [call](./src/javascript/call) |
13 |
| -- [x] [apply](./src/javascript/apply) |
14 |
| -- [x] [new](./src/javascript/new) |
15 |
| -- [x] [deepclone](./src/javascript/deepclone) |
16 |
| -- [x] [throttle](./src/javascript/throttle) |
17 |
| -- [x] [debounce](./src/javascript/debounce) |
18 |
| -- [x] [URL SearchParams](./src/javascript/searchParams) |
19 |
| -- [x] [Promise](./src/javascript/promise) |
20 |
| -- [x] [async/await](./src/javascript/async) |
21 |
| -- [x] [event-emitter](./src/javascript/event-emitter) |
22 |
| -- [x] [currify](./src/javascript/currify/currify.js) |
23 |
| -- [x] [template string](./src/javascript/template-string) |
| 11 | +- [x] [call](./src/javascript/call) / [apply](./src/javascript/apply) / [bind](./src/javascript/bind) 实现 |
| 12 | +- [x] [new](./src/javascript/new) 实现 |
| 13 | +- [x] [deepclone](./src/javascript/deepclone) 深拷贝实现 |
| 14 | +- [x] [throttle](./src/javascript/throttle) / [debounce](./src/javascript/debounce) 防抖/节流实现 |
| 15 | +- [x] [URL 参数解析](./src/javascript/searchParams) 实现 |
| 16 | +- [x] [Promise](./src/javascript/promise) 实现 |
| 17 | +- [x] [async/await](./src/javascript/async) 实现 |
| 18 | +- [x] [订阅/发布](./src/javascript/event-emitter) 实现 |
| 19 | +- [x] [柯里化](./src/javascript/currify/currify.js) 实现 |
| 20 | +- [x] [模板字符串](./src/javascript/template-string) 实现 |
24 | 21 |
|
25 |
| -## Library & Plugin |
| 22 | +## 二、常用的库和插件的代码实现 |
26 | 23 |
|
27 |
| -- [x] [Babel](./src/bundler/babel) |
| 24 | +- [x] [Webpack](./src/bundler/webpack) 的模拟实现 |
| 25 | +- [x] [Webpack-Plugin](./src/bundler/webpack-plugin) 的实现 |
| 26 | +- [x] [Babel](./src/bundler/babel) 的模拟实现 |
28 | 27 | - input => [tokenizer](./src/bundler/babel/lib/tokenizer.js) => tokens
|
29 | 28 | - tokens => [parser](./src/bundler/babel/lib/parser.js) => AST
|
30 | 29 | - AST => [transformer](./src/bundler/babel/lib/transformer.js) => newAST
|
31 | 30 | - newAST => [codeGenerator](./src/bundler/babel/lib/codeGenerator.js) => output
|
32 |
| -- [x] [Webpack](./src/bundler/webpack) |
33 |
| -- [x] [Webpack-Plugin](./src/bundler/webpack-plugin) |
34 |
| -- [x] [Babel-Plugin](./src/bundler/babel-plugin) |
35 |
| -- [x] [Redux](./src/bundler/redux) |
36 |
| -- [x] [Router](./src/bundler/router) |
| 31 | +- [x] [Babel-Plugin](./src/bundler/babel-plugin) 的实现 |
| 32 | +- [x] [Redux](./src/bundler/redux) 的模拟实现 |
| 33 | +- [x] [Router](./src/bundler/router) 的模拟实现 |
37 | 34 | - [hashRouter](./src/bundler/router/hashRouter.js)
|
38 | 35 | - [historyRouter](./src/bundler/router/historyRouter.js)
|
| 36 | +- [x] [React](https://github.com/caiyongmin/creact) 的模拟实现(在另外一个仓库,使用 TypeScript 实现) |
| 37 | +- [x] [Egg.js](https://github.com/caiyongmin/tiny-egg) 的模拟实现(在另外一个仓库,暂无单元测试) |
39 | 38 |
|
40 |
| -## DSA |
41 |
| - |
42 |
| -- [String](./src/dsa/string) |
43 |
| - - [x] [longest common substring](./src/dsa/string/longestCommonSub.js) |
44 |
| - - [x] [KMP](./src/dsa/string/kmp.js) |
45 |
| -- [Number](./src/dsa/number) |
46 |
| - - [x] [thousands format](./src/dsa/number/thousands.js) |
47 |
| -- [Array](./src/dsa/array) |
48 |
| - - [x] [remove duplicate](./src/dsa/array/unique.js) |
49 |
| - - [x] [two sum](./src/dsa/array/twoSum.js) |
50 |
| - - [x] [three sum](./src/dsa/array/threeSum.js) |
51 |
| -- [Traversal]() |
52 |
| - - [x] [DFS](./src/dsa/dfs/dfs.js) |
53 |
| - - [x] [BFS](./src/dsa/bfs/bfs.js) |
54 |
| -- [Sort](./src/dsa/sort) |
55 |
| - - [x] [bubble sort](./src/dsa/sort/bubbleSort.js) |
56 |
| - - [x] [selection sort](./src/dsa/sort/selectionSort.js) |
57 |
| - - [x] [insert sort](./src/dsa/sort/insertSort.js) |
58 |
| - - [x] [merge sort](./src/dsa/sort/mergeSort.js) |
59 |
| - - [x] [quick sort](./src/dsa/sort/quickSort.js) |
60 |
| -- [Tree](./src/dsa/tree) |
61 |
| - - [x] [binary tree](./src/dsa/tree/binaryTree.js) |
62 |
| - - [x] [binary search tree](./src/dsa/tree/binarySearchTree.js) |
63 |
| - - [x] [tree symmetry](./src/dsa/tree/treeSymmetry.js) |
64 |
| - - [x] [tree traversal](./src/dsa/tree/treeTraversal.js) |
65 |
| - - [x] [rebuild tree](./src/dsa/tree/rebuildTree.js) |
66 |
| - - [x] [invert tree](./src/dsa/tree/invertTree.js) |
67 |
| -- [Linked List](./src/dsa/linked-list) |
68 |
| - - [x] [linked list](./src/dsa/link-list/linkedList.js) |
69 |
| - - [x] [merge linked list](./src/dsa/link-list/mergeList.js) |
70 |
| - - [x] [reverse linked list](./src/dsa/link-list/reverseList.js) |
71 |
| -- [Recursion & Loop](./src/dsa/recursion) |
72 |
| - - [x] [jump floor](./src/dsa/recursion/jumpFloor.js) |
73 |
| -- [Double Pointer](./src/dsa/doublePointer) |
74 |
| - - [x] [find Kth to tail](./src/dsa/doublePointer/findKthToTail.js) |
75 |
| - - [x] [reOrder array](./src/dsa/doublePointer/reOrderArray.js) |
76 |
| -- [Backdate Programming](./src/dsa/backdateProgramming) |
77 |
| - - [x] [find all node path in tree](./src/dsa/backdateProgramming/findAllNodePath.js) |
78 |
| - - [x] [get all combination equal to target](./src/dsa/backdateProgramming/getAllCombinEqualTarget.js) |
79 |
| -- [Dynamic Programming](./src/dsa/dynamicProgramming) |
80 |
| - - [x] [min edit distance](./src/dsa/dynamicProgramming/minEditDistance.js) |
81 |
| - - [x] [min path sum](./src/dsa/dynamicProgramming/minPathSum.js) |
82 |
| -- [Greedy Programming](./src/dsa/greedyProgramming) |
83 |
| - - [x] [best time to buy and sell stock](./src/dsa/greedyProgramming/bestTimeBuyAndSellStock.js) |
84 |
| - - [x] [distribution cookie](./src/dsa/greedyProgramming/distributionCookie.js) |
| 39 | +## 三、JavaScript 实现的数据结构和常用算法 |
| 40 | + |
| 41 | +### 数据结构 |
| 42 | + |
| 43 | +- [Linked List](./src/dsa/linked-list) 链表 |
| 44 | + - [x] [linked list](./src/dsa/linked-list/linkedList.js) 双链表实现 |
| 45 | + - [x] [merge linked list](./src/dsa/linked-list/mergeList.js) 合并两个链表 |
| 46 | + - [x] [reverse linked list](./src/dsa/linked-list/reverseList.js) 反转链表 |
| 47 | +- [Array](./src/dsa/array) 数组 |
| 48 | + - [x] [remove duplicate](./src/dsa/array/unique.js) 数组去重 |
| 49 | + - [x] [two sum](./src/dsa/array/twoSum.js) 两个数之和 |
| 50 | + - [x] [three sum](./src/dsa/array/threeSum.js) 三个数之和 |
| 51 | +- [x] [Heap](./src/dsa/heap) 堆 |
| 52 | + - [x] [get min K nums](./src/dsa/heap/getMinKNums.js) 获取一段数组里面最小的 k 个数 |
| 53 | +- [x] [Stack](./src/dsa/stack) 栈 |
| 54 | +- [x] [Queue](./src/dsa/queue) 队列 |
| 55 | +- [ ] [Set](./src/dsa/set) 集合 |
| 56 | +- [ ] [Hash Table](./src/dsa/hash) 散列表 |
| 57 | +- [Tree](./src/dsa/tree) 树 |
| 58 | + - [x] [binary tree](./src/dsa/tree/binaryTree.js) 二叉树 |
| 59 | + - [x] [tree traversal](./src/dsa/tree/treeTraversal.js) 二叉树的先序/中序/后序非递归遍历 |
| 60 | + - [x] [rebuild tree](./src/dsa/tree/rebuildTree.js) 重建二叉树 |
| 61 | + - [x] [invert tree](./src/dsa/tree/invertTree.js) 翻转二叉树 |
| 62 | + - [x] [tree symmetry](./src/dsa/tree/treeSymmetry.js) 是否是镜像二叉树 |
| 63 | + |
| 64 | +### 算法 |
| 65 | + |
| 66 | +- [Sort](./src/dsa/sort) 排序 |
| 67 | + - [x] [bubble sort](./src/dsa/sort/bubbleSort.js) 冒泡排序 |
| 68 | + - [x] [selection sort](./src/dsa/sort/selectionSort.js) 选择排序 |
| 69 | + - [x] [insert sort](./src/dsa/sort/insertSort.js) 插入排序 |
| 70 | + - [x] [merge sort](./src/dsa/sort/mergeSort.js) 归并排序 |
| 71 | + - [x] [quick sort](./src/dsa/sort/quickSort.js) 快速排序 |
| 72 | +- [Divide and conquer]() 分治 |
| 73 | + - [x] [binary search tree](./src/dsa/tree/binarySearchTree.js) 二叉搜索树 |
| 74 | +- [Recursion](./src/dsa/recursion) 递归 |
| 75 | + - [x] [jump floor](./src/dsa/recursion/jumpFloor.js) 跳台阶 |
| 76 | + - [x] [find all node path in tree](./src/dsa/recursion/findAllNodePath.js) 找出二叉树中结点值的和为输入整数的所有路径 |
| 77 | +- [Traversal]() 遍历 |
| 78 | + - [x] [DFS](./src/dsa/dfs/dfs.js) 深度优先遍历 |
| 79 | + - [x] [BFS](./src/dsa/bfs/bfs.js) 广度优先遍历 |
| 80 | +- [Double Pointer](./src/dsa/doublePointer) 双指针 |
| 81 | + - [x] [find Kth to tail](./src/dsa/doublePointer/findKthToTail.js) 求链表中倒数第 k 个结点 |
| 82 | + - [x] [reOrder array](./src/dsa/doublePointer/reOrderArray.js) 数组重排序,奇数在前半部分,偶数在后半部分 |
| 83 | +- [Dynamic Programming](./src/dsa/dynamicProgramming) 动态规划 |
| 84 | + - [x] [min edit distance](./src/dsa/dynamicProgramming/minEditDistance.js) 最小编辑距离 |
| 85 | + - [x] [min path sum](./src/dsa/dynamicProgramming/minPathSum.js) 最少路径问题 |
| 86 | +- [Backdate Programming](./src/dsa/backTracking) 回溯算法 |
| 87 | + - [ ] [solve N queens](./src/dsa/backTracking/solveNQueens.js) N 皇后问题 |
| 88 | +- [Greedy Programming](./src/dsa/greedyProgramming) 贪心算法 |
| 89 | + - [ ] [best time to buy and sell stock](./src/dsa/greedyProgramming/bestTimeBuyAndSellStock.js) 买股票 |
| 90 | + - [ ] [distribution cookie](./src/dsa/greedyProgramming/distributionCookie.js) 分发饼干 |
| 91 | + |
| 92 | +### 其他 |
| 93 | + |
| 94 | +- [String](./src/dsa/string) 字符串 |
| 95 | + - [x] [longest common substring](./src/dsa/string/longestCommonSub.js) 最长公共子串 |
| 96 | + - [x] [KMP](./src/dsa/string/kmp.js) KMP 算法求子串的索引位置 |
| 97 | +- [Number](./src/dsa/number) 数字 |
| 98 | + - [x] [thousands format](./src/dsa/number/thousands.js) 千分位 |
| 99 | + |
| 100 | +--- |
| 101 | + |
| 102 | +Welcome to commit [issue](https://github.com/caiyongmin/awesome-coding-javascript/issues) & [pull request](https://github.com/caiyongmin/awesome-coding-javascript/pulls) ! |
0 commit comments