JavaScript排序数组通过多个(混合数字和字符串)字段



这个问题与指向的问题不同,因为我想按字符串,数字和字符串等进行排序。

我已经离开

JavaScript排序数组由多个(数字)字段

我有以下数据:

function GetStudentList(){
    var sl = [
    {
          "ClassOrder": 1,
          "LastName": "Blow",
          "FirstName": "Joe",
          "Class": "170-2"
    },
    {
          "ClassOrder": 2,
          "LastName": "Jane",
          "FirstName": "Sally",
          "Class": "170-1"
    },
    {
          "ClassOrder": 1,
          "LastName": "Belmont",
          "FirstName": "John",
          "Class": "170-1"
    }
]
return(sl);
}

然后我调用代码:

var selectedStudents = GetStudentList();
selectedStudents.sort(function(a,b){
    return a.LastName - b,LastName;
};

当我在浏览器中跟踪它时,它似乎可以正常工作,但是一旦我离开排序功能,Selected Students数组就会恢复。它似乎确实有效,但仅与类订单数据一起使用。另外,如果我尝试按classorder和lastname进行排序,则无济于事。

return a.ClassOrder - b.ClassOrder || a.LastName - b.LastName

您不应该将字符串与-进行比较。而是使用<>分别对下降或上升。

let sl = [
  {
    "ClassOrder": 1,
    "LastName": "Blow",
    "FirstName": "Joe",
    "Class": "170-2"
  },
  {
    "ClassOrder": 2,
    "LastName": "Jane",
    "FirstName": "Sally",
    "Class": "170-1"
  },
  {
    "ClassOrder": 1,
    "LastName": "Belmont",
    "FirstName": "John",
    "Class": "170-1"
  }
];
sl.sort((a, b) => {
  if (a.LastName > b.LastName) return 1;
  else if (a.LastName < b.LastName) return -1;
  return 0;
});
console.log(sl);

最新更新