📅  最后修改于: 2023-12-03 14:42:34.401000             🧑  作者: Mango
在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" },
];
现在,我们可以定义一个排序函数,该函数将接收两个参数a
和b
。在排序函数中,我们将使用对象数组中的键来比较对象的值。
例如,如果我们想对persons
数组按age
属性进行排序,我们可以这样编写排序函数:
function sortByAge(a, b) {
return a.age - b.age;
}
在这个函数中,我们使用a.age - b.age
来比较a
对象和b
对象的age
属性。如果a
的age
属性小于b
的age
属性,则返回负数,如果a
的age
属性大于b
的age
属性,则返回正数,如果它们相等,则返回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);
这样,我们就可以按name
或city
属性对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中如何按对象中键的值对对象数组进行排序。