📌  相关文章
📜  javascript 按对象中键的值对对象数组进行排序 - Javascript (1)

📅  最后修改于: 2023-12-03 14:42:34.401000             🧑  作者: Mango

JavaScript按对象中键的值对对象数组进行排序

在JavaScript中,我们经常需要对对象数组进行排序。如果我们想按对象中的键值来对对象数组进行排序,我们可以使用JavaScript的内置函数sort()来实现。

实现方法

首先,我们可以创建一个对象数组,如下所示:

let persons = [
  { name: "Alice", age: 25, city: "New York" },
  { name: "Bob", age: 20, city: "Chicago" },
  { name: "Charlie", age: 30, city: "Los Angeles" },
  { name: "David", age: 35, city: "San Francisco" },
];

现在,我们可以定义一个排序函数,该函数将接收两个参数ab。在排序函数中,我们将使用对象数组中的键来比较对象的值。

例如,如果我们想对persons数组按age属性进行排序,我们可以这样编写排序函数:

function sortByAge(a, b) {
  return a.age - b.age;
}

在这个函数中,我们使用a.age - b.age来比较a对象和b对象的age属性。如果aage属性小于bage属性,则返回负数,如果aage属性大于bage属性,则返回正数,如果它们相等,则返回0

现在,我们可以调用sort()函数来按age属性对persons数组进行排序:

persons.sort(sortByAge);

这将使persons数组按age属性的值从小到大排序。

可以通过类似的方式,使用其他键对数组进行排序,例如:

function sortByName(a, b) {
  if (a.name < b.name) {
    return -1;
  }
  if (a.name > b.name) {
    return 1;
  }
  return 0;
}

function sortByCity(a, b) {
  if (a.city < b.city) {
    return -1;
  }
  if (a.city > b.city) {
    return 1;
  }
  return 0;
}

persons.sort(sortByName);
persons.sort(sortByCity);

这样,我们就可以按namecity属性对persons数组进行排序了。

注意事项

请注意,在使用sort()函数对数组进行排序时,该函数会修改原始数组,而不是返回一个新数组。如果您只想查看排序后的结果而不修改原始数组,请使用数组的slice()函数创建一个新的数组。

总结

在JavaScript中,我们可以使用sort()函数按对象中的键值来对对象数组进行排序。我们只需要定义一个适当的比较函数来比较对象的属性值,并将其传递给sort()函数即可。

代码的实现如下:

let persons = [
  { name: "Alice", age: 25, city: "New York" },
  { name: "Bob", age: 20, city: "Chicago" },
  { name: "Charlie", age: 30, city: "Los Angeles" },
  { name: "David", age: 35, city: "San Francisco" },
];

function sortByAge(a, b) {
  return a.age - b.age;
}

function sortByName(a, b) {
  if (a.name < b.name) {
    return -1;
  }
  if (a.name > b.name) {
    return 1;
  }
  return 0;
}

function sortByCity(a, b) {
  if (a.city < b.city) {
    return -1;
  }
  if (a.city > b.city) {
    return 1;
  }
  return 0;
}

persons.sort(sortByAge);
persons.sort(sortByName);
persons.sort(sortByCity);

希望这篇文章能够帮助您了解JavaScript中如何按对象中键的值对对象数组进行排序。