大家好,我是IT修真院深圳分院第02期学员,一枚正直善良的web程序员。
今天给大家分享一下,修真院官网js任务,深度思考中的知识点——常见的几种排序方法?
1.背景介绍
将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。在angularJS中,过滤器用来格式化需要展示给用户的数据。AngularJS有很多实用的内置过滤器(currency 、date、limitTo等),同时也提 供了方便的途径可以自己创建过滤器。我们对数据的排序也就相当于对数据进行了“格式化”,我们通过过滤器来实现数据的排序。
2.知识剖析
在HTML中的模板绑定符号{{ }}内通过|符号来调用过滤器。例如,假设我们希望将字符串 转换成大写,可以对字符串中的每个字符都单独进行转换操作,也可以使用过滤器:{{ name | uppercase }}
以HTML的形式使用过滤器时,如果需要传递参数给过滤器,只要在过滤器名字后面加冒号 即可。如果有多个参数,可以在每个参数后面都加入冒号。可以用|符号作为分割符来同时使用多个过滤器。
3.常见问题
常见的几种排序方法有哪些?
4.解决方案
一些其他的过滤器,这里就不再阐述详见深圳小课堂151期,本次小课堂主要给大家分享过滤器当中的orderBy。
orderBy过滤器可以用表达式对指定的数组进行排序。 orderBy可以接受两个参数,第一个是必需的,第二个是可选的。 第一个参数是用来确定数组排序方向的谓词,我们可以传入+或-来强制进行升序或降序排列。第二个参数用来控制排序的方向(是否逆向),通过将第二个参数设置为true可以将排序结果进行反转。
另外多字段排序,只需要把orderBy后面的条件作为数组就可以了。
5.编码实战
6.扩展思考
你知道排序算法有哪些吗?
常见排序算法:快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。
排序算法的稳定性,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。
7.更多讨论
1.orderBy是不是稳定的排序算法?
2.使用自定义过滤器实现排序?
课后提问:
问:原生JS中sort()怎么实现排序的?
答:默认的sort()会按字符串来处理排序,要实现按数值的大小对数字进行排序,就必须使用一个排序函数。
8.参考文献
参考一:AngularJS权威教程
参考三:angular入门--列表排序
9.视频资料
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
下期不见不散~