📌  相关文章
📜  javascript对对象数组进行升序和降序排序 - Javascript(1)

📅  最后修改于: 2023-12-03 15:16:17.969000             🧑  作者: Mango

Javascript 对象数组的升序和降序排序

在JavaScript中,我们可以使用 sort() 方法对对象数组进行升序和降序排序。默认情况下,它会将元素视为字符串并按照Unicode代码点排序。但是,我们可以传递一个函数作为参数来指定自定义排序规则。

1. 升序排序

要对对象数组进行升序排序,我们可以使用以下代码:

array.sort(function(a, b) {
  return a.property - b.property;
});

上述代码将按照 property 属性的值对对象数组进行升序排序。我们可以将 property 替换为任何其他属性名。

如果我们要按照字符串属性进行排序,则可以使用以下代码:

array.sort(function(a, b) {
  var nameA = a.name.toUpperCase(); // 忽略大小写
  var nameB = b.name.toUpperCase(); // 忽略大小写
  if (nameA < nameB) {
    return -1;
  }
  if (nameA > nameB) {
    return 1;
  }
  // 名字相等时不排序
  return 0;
});

上述代码将按照 name 属性的值对对象数组进行升序排序,并且会忽略大小写。如果 nameA 的值小于 nameB 的值,则返回 -1,表示 a 应该在 b 之前。反之亦然。如果两个值相等,则返回 0,表示它们的顺序不重要。我们可以根据需求自定义排序规则。

2. 降序排序

要对对象数组进行降序排序,我们可以使用以下代码:

array.sort(function(a, b) {
  return b.property - a.property;
});

上述代码将按照 property 属性的值对对象数组进行降序排序。

如果我们要按照字符串属性进行降序排序,则可以使用以下代码:

array.sort(function(a, b) {
  var nameA = a.name.toUpperCase(); // 忽略大小写
  var nameB = b.name.toUpperCase(); // 忽略大小写
  if (nameA > nameB) {
    return -1;
  }
  if (nameA < nameB) {
    return 1;
  }
  // 名字相等时不排序
  return 0;
});

上述代码将按照 name 属性的值对对象数组进行降序排序,并且会忽略大小写。如果 nameA 的值大于 nameB 的值,则返回 -1,表示 b 应该在 a 之前。反之亦然。如果两个值相等,则返回 0,表示它们的顺序不重要。

总结:使用 sort() 方法可以对对象数组进行排序,并且可以根据需要自定义排序规则。默认情况下,它将按照Unicode代码点升序排序,但是我们可以使用自定义函数进行升序和降序排序。