js中的sort函數使用說明+最通俗易懂的解釋(你不理解都不行)

今天跟大家分享下js中數組的排序函數sort的用法和說明


sort函數使用起來簡單,但是理解起來還是有點繞的,我這裏也跟大家做了通俗易懂的解釋


話不多說,直接上碼,代碼很少,註釋寫了一大堆哈哈哈,怕大家不好理解

 

                    //初始化一個數組/集合
                    var valueStr = '張三/男/18/1995-2-22/10000,李四/女/26/1988-12-12/8888,王五/男/15/2003-6-23/3000';
                    var userList = valueStr.split(',').map((valueStrItem, index) => {
                        var arr = valueStrItem.split('/');
                        var user = {
                            UserId: index + 1,
                            Name: arr[0],
                            Sex: arr[1],
                            Age: parseInt(arr[2]),
                            Birthday: lingbugUtil.dateFormat(new Date(arr[3]), 'yyyy-MM-dd w'),
                            Salary: parseInt(arr[4])
                        };
                        return user;
                    });
                    debugger;

                    //使用排序方法,並且指定排序邏輯(告訴它如何排序),注意:這個方法,會改變原有的數組/集合
                    userList.sort((before, after) => {
                        //第一個參數是前一個對象,第二個參數是後一個對象(這裏的前後都是相對於默認集合/數組的排序而言)
                        //也就是第一個參數的位置目前所在的位置在第二個參數所在的位置前面(這裏大家可以調試去查看就知道了)

                        //求差:如果差值flag大於0,這兩個就要對調位置
                        var flag = after.Age - before.Age;
                        //所以:
                        //如果想要降序,就後面的減前面的,如果後面的比前面的大,就會大於0,就會對調位置啦
                        //如果想要升序,就前面的減後面的,如果前面的比後面的大,也會對調位置
                        return flag;
                    });
                    debugger;
                    var test = null;

                    //教大家一個最好記的方法:
                    //1.第一個參數是升序,第二個參數是降序
                    //2.如果想要xx序,就用xx序參數 - 另外一個參數

                    //例如:我想按照年齡升序:就升序參數的年齡 - 另一個參數的年齡
                    userList.sort((ascItem, descItem) => {
                        return ascItem.Age - descItem.Age;
                    });
                    debugger;
                    test = null;

                    //再例如:我想按照薪資倒序:就倒序參數的薪資 - 另一個參數的薪資
                    userList.sort((ascItem, descItem) => {
                        return descItem.Salary - ascItem.Salary;
                    });
                    debugger;
                    test = null;

 

Ending~

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章