Wing Meng

Results 75 comments of Wing Meng

虚拟列表? > https://segmentfault.com/a/1190000016734597

#### 先说说这三者的区别吧: - var 和 let 用以声明变量,const 用于声明只读的常量; - var 声明的变量,不存在块级作用域,在全局范围内都有效,let 和 const 声明的,只在它所在的代码块内有效; - let 和 const 不存在像 var 那样的 [“变量提升”](https://www.jianshu.com/p/d4b88723cd12) 现象,所以 var 定义变量可以先使用,后声明,而 let 和 const 只可先声明,后使用; -...

JavaScript 没有真正意义上的数组,所有的数组其实是对象,其“索引”看起来是数字,其实会被转换成字符串,作为属性名(对象的 key)来使用。所以无论是取第 1 个还是取第 10 万个元素,都是用 key 精确查找哈希表的过程,其消耗时间大致相同。 @lvtraveler 请帮忙测试下稀松数组。

题目说的是 ES6,所以不考虑 `.jsx`、`.ts` 这类 js 拓展语言。 ES6 转 ES5 目前行业标配是用 `Babel`,转换的大致流程如下: 1. 解析:解析代码字符串,生成 AST; 2. 转换:按一定的规则转换、修改 AST; 3. 生成:将修改后的 AST 转换成普通代码。 如果不用工具,纯人工的话,就是使用或自己写各种 polyfill 了。

```js const data = { 1: 222, 2: 123, 5: 888, 8: 0 }; [...Array(12)].map((_, idx) => typeof data[idx + 1] === 'undefined' ? null : data[idx + 1]);

> 最简短,apply+伪数组 > > ```js > Array.apply(null, {1:222, 2:123, 5:888, length: 12}).map(x => typeof x === 'number' ? x : null) > ``` 思路非常棒,就是结果不对 :joy:,无法与月份一 一对应,续貂调整: ```js Array.apply(null, {1:222, 2:123,...

编程式实现,见笑了 ```js function rotateArr(arr, k) { let len = arr.length; let result = []; k = k > len ? k % len : k; for (let i = len...

> 因为步数有可能大于数组长度,所以要先取余 > > ```js > function rotate(arr, k) { > const len = arr.length > const step = k % len > return arr.slice(-step).concat(arr.slice(0, len - step)) > }...

两轮遍历,时间复杂度 O(n^2) :joy: ```js function convert(arr) { let tree = []; arr.map((it, idx, array) => { let parent = it.parentId; if (parent === 0) { // 根节点 tree.push(it); } else...

刚开始以为很简单,啪啪啪写了下面这段丢人的代码: ```js // 不严谨的写法 function getIntersection(arr1, arr2) { return arr1.filter(item => arr2.includes(item)); } ``` 看了 @Molunerfinn 的回答后,才知道自己错了,下面是修正后的: ```js function getIntersection(arr1, arr2) { let result = []; [...arr1].forEach((item, index, array) =>...