FrankKai
FrankKai
> 博主,在createElement 函数里,如何声明多个命名插槽? createElement函数的子元素(DOM节点、组件)可以是多个,每个子元素都可以声明一个命名插槽。 也可以参考一下view的table组件的table-slot组件。https://github.com/view-design/ViewUI/blob/master/src/components/table/slot.js
### 什么是排序? #### 初识 生活中也有很多排序,比如考试以后按总分进行降序排列: 第一名700分、第二名699分、第三名698分等等等等 值得注意的是,虽然分数是倒序,但是名次却是正序1,2,3··· 排序在生活中的例子实在太多了,就不一一赘述了。 - 排序的英文名为sort - 排序是一个将无序(乱)的一组数据变为有序的过程 - 有序通常分为两种:升序(asc)和降序(desc) - 排序在软件开发中非常常见:前端数据排序、后端数据库查表升序(asc)、降序(desc) - 很多算法依赖于排序算法:栈式算法、二分查找法等等 #### 算法图 ##### 无序  ##### 降序  ##### 升序 
### JavaScript中的排序 在js中,Array.prototype上的sort()函数可以很方便的达到我们对升序和降序的要求。 - sort()可以升序也可以降序 - sort()排序后,数组本身发生变化,不产生新数组 #### 普通排序 假设要给[2,4,3,1,5]进行排序: ```js const arr = [2,4,3,1,5] // 升序 arr.sort((a,b)=>a-b) // 降序 arr.sort((a,b)=>b-a) ``` #### 复杂排序 对于复杂情况的话,例如需要对对象数组根据对象中的某个key排序。 ```js // items按照value排序 const items...
### 必会经典排序算法  经典排序算法有十(几)种,由于当前的能力有限,我将先介绍`冒泡、选择、插入、归并和快排`这五种排序算法。 看了sort()函数的V8源码以后,是不是一筹莫展觉得“哇 好难”,除了心存敬畏,其实明白算法是会经过不断的优化的,sort()函数处理了根据JavaScript语言特性做了很多性能上的优化。 通常来说我们去开心使用这样性能又好使用又便捷的sort()函数即可,但其实有一些经典的排序算法,还是非常值得去探索一下的。 即使数据结构课上学过,但其实时间一久,砖搬得过多,还是容易忘记的,就算没有忘记,工作几年以后再回过头来看算法,可能会对过去的算法做一个优化。 LeetCode的912题是一个很好的oj环境,适合对自己的排序算法做验证,推荐给大家。 题目:https://leetcode-cn.com/problems/sort-an-array/ 题解:https://github.com/FrankKai/leetcode-js/blob/master/912.Sort_an_Array.js - 冒泡排序(最大值置尾排序) - 选择排序(最小值置头排序) - 插入排序(寻找位置排序) - 归并排序(二分递归排序) - 快速排序(基分递归排序) #### 冒泡排序(最大值置尾排序) ```js /** * 解法:冒泡排序 * 思路:外层每次循环都是不断将最大值置于尾部,最小值像气泡一样向前冒出 *...
### leetcode 排序 解法题目 - 35.搜索插入位置(easy) - 88.合并两个有序数组(easy) - 191.位1的个数(easy) - 581.最短无序连续子数组(easy) - 1331.数组序号转换(easy) - 56.合并区间(medium) - 215.数组中的第K个最大元素(medium) #### 35. 搜索插入位置 题目:https://leetcode-cn.com/problems/search-insert-position/ 题解:https://github.com/FrankKai/leetcode-js/blob/master/35.Search_Insert_Position.js ```js var searchInsert = function(nums, target) {...
### 参考资料 - https://juejin.im/post/57dcd394a22b9d00610c5ec8 - https://www.zhihu.com/people/ting-zhao-wu-yue-tian-da-lan-qiu - https://leetcode-cn.com/problems/sort-an-array/ - https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw%3D%3D&chksm=8c99f9f8bbee70eef627d0f5e5b80a604221abb3a1b5617b397fa178582dcb063c9fb6f904b3&idx=1&mid=2653195042&scene=21&sn=2b0915cd2298be9f2163cc90a3d464da#wechat_redirect - https://github.com/v8/v8/blob/ad82a40509c5b5b4680d4299c8f08d6c6d31af3c/src/js/array.js
### 初识reduce() #### 概念 - reduce的中文意思为**约简**。Hadoop有一个概念叫MapReduce。 - `reduce()`方法执行一个reducer函数,reducer函数是自定义的。 - 这个reducer函数会遍历数组中的每个元素,并且最终输出一个唯一的值。 - reducer函数的返回值会赋值给accumulator,数组遍历期间每次迭代这个值都会被**remembered**住,最终成为最后的,单个的结果值。 #### 最简reduce ```js const array1 = [1, 2, 3, 4]; const reducer = (acc, cur) => acc +...
### 语法 ```js arr.reduce(callback( accumulator, currentValue[, index[, array]] ), [, initialValue]) ``` #### 参数 - callback 这个函数会对数组中的每个元素执行(如果没有initialValue指定的话,第一项除外。) 这个回调函数有4个argument: - accumulator 累加器累加callback的返回值。它是callback上一次调用的返回的累加值,或者是initialValue(如果指定initialValue的话,第一项的acc是这个指定的值。) - currentValue 数组当前处理的元素。 - index(可选的)数组当前处理的元素的index。**如果指定initialValue的话,index从 0 开始;否则从 1 开始。**...
### 描述 #### reduce callback的四个参数 reduce()方法对数组中的每个元素执行的callback,会接收4个参数: 1. accumulator(acc) 2. currentValue(cur) 3. currentIndex(idx) 4. array(arr) - **acc和cur。** - callback第一次调用时,acc和cur可以是两个值之一。 - 如果initialValue在调用reduce()时指定,acc等于initialValue,cur等于arr[0]。 - 如果initialValue没有指定,acc等于arr[0],cur等于arr[1]。 - **开始计算index。** 如果initialValue没有提供,reduce()会从index 1开始计算,跳过index 0的阶段。若有提供initialValue,从index 0开始计算。 - **TypeError。**...
### 实际用途 #### 对一个数组中的元素求和 ```js let total = [ 0, 1, 2, 3 ].reduce( ( accumulator, currentValue ) => accumulator + currentValue, 0 ) // total为6 ``` #### 对对象中的数字求和 如果想让数组中的每个元素都进入迭代,**必须**设置一个initialValue。...