lhyt

Results 27 comments of lhyt

- bfs利用队列实现,循环中做的是push => shift => push => shift - dfs利用栈实现,循环中做的是push => pop => push => pop 刚刚好,中间仅仅差了一个数组方法: ```javascript function bfs(target, id) { const quene = [...target] do { const current...

> 变量生命周期:声明(作用域注册一个变量)、初始化(分配内存,初始化为undefined)、赋值 - var:遇到有var的作用域,**在任何语句执行前都已经完成了声明和初始化**,也就是变量提升而且拿到undefined的原因由来 - function: 声明、初始化、赋值一开始就全部完成,所以函数的变量提升优先级更高 - let:解析器进入一个块级作用域,发现let关键字,变量只是先完成**声明**,并没有到**初始化**那一步。此时如果在此作用域提前访问,则报错xx is not defined,这就是暂时性死区的由来。等到解析到有let那一行的时候,才会进入**初始化**阶段。如果let的那一行是赋值操作,则初始化和赋值同时进行 - const、class都是同let一样的道理 比如解析如下代码步骤: ```javascript { // 没用的第一行 // 没用的第二行 console.log(a) // 如果此时访问a报错 a is not defined let a...

最简短,apply+伪数组 ```javascript Array.apply(null, {1:222, 2:123, 5:888, length: 12}).map(x => typeof x === 'number' ? x : null) ```

如果一行写不出来,我选择不写 ```js // 德国以 . 分割金钱, 转到德国当地格式化方案即可 10000000000..toLocaleString('de-DE') // 寻找字符空隙加 . '10000000000'.replace(/\B(?=(\d{3})+(?!\d))/g, '.') // 寻找数字并在其后面加 . '10000000000'.replace(/(\d)(?=(\d{3})+\b)/g, '$1.') ```

```js function reverse(num) { const str = `${num}` return str ? `${str % 10}${reverse(str.slice(0, str.length - 1))}` : '' } ```

```javascript [...new Set(JSON.parse(`[${arr}]`).sort((a, b) => a - b))] ```

如果重复的数都是连着的 ```javascript JSON.parse( `[${`${arr}`.replace(/\b(\d+),\1/g, '$1')}]`).sort((a, b) => a - b) ```

一次循环解决 ```javascript function convert(list) { const cache = new Map() return list.reduce((res, cur) => { const { id, parentId } = cur const item = { ...cur } if (parentId...

```js function normalize(str, res = {}) { if (str) { if (str[0] === "[") { const exec = /^\[(\w+)(\[.*\]){0,1}\]$/.exec(str); if (exec) { const [, value, next] = exec; res.value =...

```js function simplifyStr(str) { let pre = void 0; return `${str},`.replace(/ /, '').replace(/\d+,(?=(\d+|\B))/g, (current, next) => { const _current = +current.split(',')[0] pre = pre === undefined ? +_current : pre...