Results 12 comments of Youzi

正常来说取数组元素应该没差才对,都是按下标取的,也不是像链表那样要逐个查找。 ![image](https://user-images.githubusercontent.com/28807374/57832924-5e064580-77eb-11e9-8e89-4ea64134bd68.png)

以前有做过一个一样的题,等号运算符和`.`运算符优先级的问题。 [https://youzixr.github.io/2019/03/05/JS-%E5%88%B7%E9%A2%98%E8%AE%B0%E5%BD%95/](url)

> 如果能传两个参数的话,这个算法将会更好。 > 尾递归调用。性能上好不少。 > > ```js > function func(v, r = '') { > v += '' > if (v.length < 1) return r > r += v.slice(v.length-1) >...

关于`push`上面的同学解释的挺清楚的了, 我就想知道为什么对象添加了`splice`属性后会变成类数组对象?

```javascript /* 第 77 题:旋转数组算法题 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 输入: [1, 2, 3, 4, 5, 6, 7] 和 k = 3 输出: [5, 6, 7, 1, 2, 3, 4]...

基本思路: 使用Map保存id和对象的映射,循环list,根据parentId在Map里取得父节点,如果父节点有children属性,就直接push当前的子节点,如果没有就添加children属性,最后遍历一遍list把parentId===0的节点取出来。 ```javascript const convert = list => { let map = new Map(); let result = [] list.forEach(el => { map.set(el.id, el); }); list.forEach(el => { let parent =...

/* 第 59 题:给定两个数组,写一个方法来计算它们的交集。 例如:给定 nums1 = [1, 2, 2, 1],nums2 = [2, 2],返回 [2, 2]。 */ // 思路:遍历数组1,对每个元素判断其是否在数组2中,存在则提出来放到一个新数组里,并且从数组2中剔除,以确保下一次遍历不会出现重复的。 // 由于Array.splice()函数效率比较低,所以采用空间换取时间的方式,剔除的过程是将其他非交集元素放到新数组里。 // 想了想,还是用简单的splice吧。 function intersect (ary1, ary2) { let longAry,...

```javascript // 正序循环方案 // 由于splice会将nums.length - 1,所以让数组下标自减,强制回溯到上一个已操作的元素 const moveZeroToEnd = (nums) => { let length = nums.length for (let i = 0; i < nums.length; i++) { let el =...

用ASCII做了一下。 // 第 69 题: 如何把一个字符串的大小写取反(大写变小写小写变大写),例如 ’AbC' 变成 'aBc' 。 const reverseStr = (str) => { let tmpAry = str.split('') let resultAry = [] let a = 'a'.charCodeAt() let A...

我发现楼上的朋友们和我想的不太一样啊,我理解的题目意思是把连续的元素组成一个数组,比如`1,2,3,4`组成一个数组,`7,8,9,10`组成一个数组,楼上的做法基本是把0-9,10-19这样的区间组成一个数组。姑且也贴一个我的理解的解法。 // 第 67 题:随机生成一个长度为 10 的整数类型的数组,例如 [2, 10, 3, 4, 5, 11, 10, 11, 20],将其排列成一个新数组,要求新数组形式如下,例如 [[2, 3, 4, 5], [10, 11], [20]]。 // 随机生成数组 const randomAry = (n =...