如何在 JavaScript 中按属性值对对象数组进行排序
答案:使用sort()
方法
您可以将 sort()
方法与自定义比较函数结合使用,以按属性值对 JavaScript 对象数组进行排序。 默认排序顺序是升序。
如果两个值相等,自定义比较函数必须返回一个等于零的整数,如果第一个值小于第二个值,则返回一个小于零的整数,如果第一个值大于第二个值,则返回一个大于零的整数。
以下示例将向您展示如何按字符串属性值对对象数组进行排序。
示例
/* Defining comparison function */
function compareNames(a, b) {
/* 将名称字符串转换为小写
比较忽略大写和小写 */
var nameA = a.name.toLowerCase();
var nameB = b.name.toLowerCase();
if(nameA < nameB) {
return -1;
}
if(nameA > nameB) {
return 1;
}
/* 名称必须相同 */
return 0;
}
/* 样本对象数组 */
var objArr = [
{ name: "Harry", age: 14 },
{ name: "Peter", age: 20 },
{ name: "Alice", age: 18 }
];
/* 执行排序 */
objArr.sort(compareNames);
console.log(objArr);
定义比较函数来比较数字更加容易。 要比较数字而不是字符串,比较函数可以从 a 中减去 b。 这是一个示例,显示如何按数字属性值升序对对象数组进行排序。
示例
/* 定义比较函数 */
function compareAges(a, b) {
return a.age - b.age;
}
/* 样本对象数组 */
var objArr = [
{ name: "Harry", age: 14 },
{ name: "Peter", age: 20 },
{ name: "Alice", age: 18 }
];
/* 执行排序 */
objArr.sort(compareAges);
console.log(objArr);
请参阅 JavaScript 对象
上的教程,了解有关创建和操作对象的更多信息。
FAQ 相关问题解答
以下是与此主题相关的更多常见问题解答: