📅  最后修改于: 2023-12-03 15:16:17.969000             🧑  作者: Mango
在JavaScript中,我们可以使用 sort()
方法对对象数组进行升序和降序排序。默认情况下,它会将元素视为字符串并按照Unicode代码点排序。但是,我们可以传递一个函数作为参数来指定自定义排序规则。
要对对象数组进行升序排序,我们可以使用以下代码:
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
,表示它们的顺序不重要。我们可以根据需求自定义排序规则。
要对对象数组进行降序排序,我们可以使用以下代码:
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代码点升序排序,但是我们可以使用自定义函数进行升序和降序排序。