数组对象 按照对象中的某个字段排序
在JavaScript中,可以使用数组的sort()方法按照对象中的某个字段对数组进行排序。
按照对象中的某个字段对数组进行排序:
基本排序方法
升序排序
const array = [{ name: 'John', age: 25 },{ name: 'Jane', age: 21 },{ name: 'Bob', age: 30 }
];// 按照age字段升序排序
array.sort((a, b) => a.age - b.age);console.log(array);
/*
输出:
[{ name: 'Jane', age: 21 },{ name: 'John', age: 25 },{ name: 'Bob', age: 30 }
]
*/
降序排序
// 按照age字段降序排序
array.sort((a, b) => b.age - a.age);console.log(array);
/*
输出:
[{ name: 'Bob', age: 30 },{ name: 'John', age: 25 },{ name: 'Jane', age: 21 }
]
*/
按照对象中的某个字符串字段对数组进行排序:
const array = [{ name: 'John', age: 25 },{ name: 'Jane', age: 21 },{ name: 'Bob', age: 30 },{ name: 'Alice', age: 28 }
];// 按照name字段升序排序 字母排序
array.sort((a, b) => a.name.localeCompare(b.name));console.log(array);
/*
输出:
[{ name: 'Alice', age: 28 },{ name: 'Bob', age: 30 },{ name: 'Jane', age: 21 },{ name: 'John', age: 25 }
]
*/
按照对象中的时间字段对数组进行排序
const array = [{ name: 'Event 1', date: '2023-10-15' },{ name: 'Event 2', date: '2023-09-20' },{ name: 'Event 3', date: '2023-11-05' }
];
升序排序(从早到晚)
array.sort((a, b) => new Date(a.date) - new Date(b.date));console.log(array);
/*
输出:
[{ name: 'Event 2', date: '2023-09-20' },{ name: 'Event 1', date: '2023-10-15' },{ name: 'Event 3', date: '2023-11-05' }
]
*/
降序排序(从晚到早)
array.sort((a, b) => new Date(b.date) - new Date(a.date));console.log(array);
/*
输出:
[{ name: 'Event 3', date: '2023-11-05' },{ name: 'Event 1', date: '2023-10-15' },{ name: 'Event 2', date: '2023-09-20' }
]
*/
处理不同日期格式
如果你的日期格式不是ISO标准格式(YYYY-MM-DD),你需要确保new Date()能够正确解析你的日期字符串。例如:
const array = [{ name: 'Event 1', date: '15/10/2023' }, // DD/MM/YYYY{ name: 'Event 2', date: '20/09/2023' },{ name: 'Event 3', date: '05/11/2023' }
];// 自定义解析函数
function parseCustomDate(dateStr) {const [day, month, year] = dateStr.split('/');return new Date(year, month - 1, day); // 月份从0开始
}array.sort((a, b) => parseCustomDate(a.date) - parseCustomDate(b.date));console.log(array);