美文网首页
sort排序

sort排序

作者: 早起的月亮 | 来源:发表于2022-08-31 19:03 被阅读0次

    \color{#1497ff}{sort简介}

    sort是利用 \color{#FF0000}{插入排序} 的算法进行工作的。

    插入排序:\color{#FF0000}{ 一般也被称为直接插入排序,是通过构建有序序列,插入排序是一种最简单的排序方法,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。}

    1.从第一个元素开始,该元素可以认为已经被排序;
    2.取出下一个元素,在已经排序的元素序列中从后向前扫描;
    3.如果该元素(已排序)大于新元素,将该元素移到下一位置;
    4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
    5.将新元素插入到该位置后;
    6.重复步骤2~5

    \color{#FF0000}{ 可在文末参考具体实例帮助理解记忆该原理流程}

    \color{#FF0000}{示例数组}

    var list = [{
        id:11,
        key:1999,
        name:'小明'
    },{
        id:28,
        key:1939,
        name:'小华'
    },{
        id:34,
        key:1969,
        name:'小刚'
    },{
        id:42,
        key:1039,
        name:'小红'
    },{
        id:59,
        key:239,
        name:'小红'
    }]
    

    \color{#FF0000}{1.按照自定义字段进行排序}

    /*
        params  list   Array   需要处理的数组
        params  str    String  指定的字段 
        params  order  String  排列顺序(升序或者降序)
    **/
    function sortBy(list,str,order){
        order= order== 'down' ? -1 : 1
        return list.sort((a,b)=>{
            a = a[str] 
            b = b[str] 
            if(a < b) { 
                return order * -1
            }
            if(a > b) { 
                return order * 1 
            }
        })
    }
    //使用示例
    sortBy(list,'key','down') 
    

    \color{#FF0000}{ 2.按照自定义顺序进行排序}

    list.sort((a,b)=>{
       var order = [59,28,34,42,11]  // 自定义的顺序
       console.log({'a':a.id,'b':b.id,'indexof': order.indexOf(a.id) - order.indexOf(b.id)})
       return order.indexOf(a.id) - order.indexOf(b.id)
    })
    
    \color{#FF0000}{ 2.1 控制台返回的结果如下}

    {a: 28, b: 11, indexof: -3}
    {a: 34, b: 28, indexof: 1 }
    {a: 34, b: 11, indexof: -2}
    {a: 34, b: 28, indexof: 1}
    {a: 42, b: 34, indexof: 1}
    {a: 42, b: 11, indexof: -1}
    {a: 59, b: 42, indexof: -3}
    {a: 59, b: 34, indexof: -2}
    {a: 59, b: 28, indexof: -1}

    \color{#FF0000}{2.2 执行解析}
    当前执行位置 执行结果
    {a: 28, b: 11, indexof: -3} [28,11,34,42,59]
    {a: 34, b: 28, indexof: 1 } [28,34,11,42,59]
    {a: 34, b: 11, indexof: -2} [28,34,11,42,59]
    {a: 34, b: 28, indexof: 1} [28,34,11,42,59]
    {a: 42, b: 34, indexof: 1} [28,34,42,11,59]
    {a: 42, b: 11, indexof: -1} [28,34,42,11,59]
    {a: 59, b: 42, indexof: -3} [28,34,59,42,11]
    {a: 59, b: 34, indexof: -2} [28,59,34,42,11]
    {a: 59, b: 28, indexof: -1} [59,28,34,42,11]

    相关文章

      网友评论

          本文标题:sort排序

          本文链接:https://www.haomeiwen.com/subject/exfrnrtx.html