为了账号安全,请及时绑定邮箱和手机立即绑定

使用字符串字母顺序的Jquery排序数组

使用字符串字母顺序的Jquery排序数组

侃侃尔雅 2022-11-11 16:37:17
我有一个数组,我想使用名称对象按字母顺序对数组进行排序。目前,它排序正确,但有一个小问题。https://jsfiddle.net/b3hv75u8/1/var arry = [{    'name': '2.1 Foo',    'children': [{        'name': '2.1.1 Foo ',      },      {        'name': '2.1.3 Foo ',      },      {        'name': '2.1.10 Foo ',      },      {        'name': '2.1.2 Foo ',      },    ],  },  {    'name': '1.1 Foo',    'children': [{        'name': '1.1.2 Foo ',      },    ],  },];function SortByName(a, b){        if(a.children){            a.children = a.children.sort(SortByName)        }        if(b.children){            b.children = b.children.sort(SortByName)        }        var aName = a.name.toLowerCase();        var bName = b.name.toLowerCase();        return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));    }            $(document).ready(function() {      var sorted_array = arry.sort(SortByName)      console.log(sorted_array)    })<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
查看完整描述

1 回答

?
开心每一天1111

TA贡献1836条经验 获得超12个赞

在比较之前,您需要使用正则表达式来消除点。


var arry = [

  {

    'name': '2.1 Foo',

    'children': [{

        'name': '2.1.1 Foo ',

      },

      {

        'name': '2.1.3 Foo ',

      },

      {

        'name': '2.1.10 Foo ',

      },

      {

        'name': '2.1.2 Foo ',

      },

    ],

  },

  {

    'name': '1.1 Foo',

    'children': [{

        'name': '1.1.2 Foo ',

      },

    ],

  },

];



function SortByName(a, b){

        if(a.children){

            a.children = a.children.sort(SortByName)

        }

        if(b.children){

            b.children = b.children.sort(SortByName)

        }


        var aName = parseInt( a.name.toLowerCase().replace(/\./g, "") );

        var bName = parseInt( b.name.toLowerCase().replace(/\./g, "") );


        return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));

    }

    

    

    $(document).ready(function() {

      var sorted_array = arry.sort(SortByName)

      console.log(sorted_array)

    })

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


查看完整回答
反对 回复 2022-11-11
  • 1 回答
  • 0 关注
  • 46 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信