代码之家  ›  专栏  ›  技术社区  ›  Er KK Chopra

在控制器中使用AngularJS对带数字的字符串排序

  •  0
  • Er KK Chopra  · 技术社区  · 5 年前

    我有如下数据:-

    $scope.crewList = [{id: 1, weekName: "crew1", dayName: "sunday"},
    {id: 4, weekName: "crew11", dayName: "monday"},
    {id: 3, weekName: "crew12", dayName: "tuesday"},
    {id: 2, weekName: "crew10", dayName: "tuesday"},
    {id: 5, weekName: "crew4", dayName: "tuesday"},
    {id: 8, weekName: "crew3", dayName: "tuesday"},
    {id: 12, weekName: "crew2", dayName: "tuesday"}]
    

    而且需要按周末时间排序,我正在寻找解决方案在控制器而不是在html

    $scope.crewList = [{id: 1, weekName: "crew1", dayName: "sunday"},
        {id: 12, weekName: "crew2", dayName: "tuesday"}
        {id: 4, weekName: "crew3", dayName: "monday"},
        {id: 3, weekName: "crew4", dayName: "tuesday"},
        {id: 2, weekName: "crew10", dayName: "tuesday"},
        {id: 5, weekName: "crew11", dayName: "tuesday"},
        {id: 8, weekName: "crew12", dayName: "tuesday"}]
    

    提前谢谢

    2 回复  |  直到 5 年前
        1
  •  2
  •   Pranav C Balan Ansh Takalkar    5 年前

    $scope.crewList.sort(({weekName : a},{weekName : b}) => (a.match(/\d+$/) || [0])[0] - (b.match(/\d+$/) || [0])[0])
    

    const list = [{id: 1, weekName: "crew1", dayName: "sunday"},
        {id: 12, weekName: "crew2", dayName: "tuesday"},
        {id: 4, weekName: "crew3", dayName: "monday"},
        {id: 3, weekName: "crew4", dayName: "tuesday"},
        {id: 2, weekName: "crew10", dayName: "tuesday"},
        {id: 5, weekName: "crew11", dayName: "tuesday"},
        {id: 8, weekName: "crew12", dayName: "tuesday"}];
        
        list.sort(({weekName : a},{weekName : b}) => a.match(/\d+$/)[0] - b.match(/\d+$/)[0]);
        
        console.log(list)