如何按year键的值对包含年月信息的对象数组进行升序排序
按年份升序排序对象数组的实现方案
map方法的作用是对数组元素做映射转换,不具备排序能力,你需要使用JavaScript内置的Array.sort()方法实现需求,具体代码如下:
基础实现(会修改原数组)
// 你的原始数据数组 const data = [ {months: {}, year: "2017"}, {months: {}, year: "2019"}, {months: {}, year: "2018"}, {months: {}, year: "2011"}, {months: {}, year: "2010"}, {months: {}, year: "2012"}, {months: {}, year: "2013"}, {months: {}, year: "2015"}, {months: {}, year: "2014"}, {months: {}, year: "2016"} ]; // 按年份升序排序 data.sort((a, b) => { // 将字符串类型的年份转为数字后比较 return Number(a.year) - Number(b.year); });
不修改原数组的实现
sort为原地排序方法,如果需要保留原始数组的顺序,可先对原数组做浅拷贝后再排序:
const sortedData = [...data].sort((a, b) => Number(a.year) - Number(b.year));
相关说明
- 比较函数的返回值规则:返回值小于0时a排在b前,大于0时b排在a前,等于0时顺序不变。数字年份相减的结果正好匹配升序排序的逻辑
- 也可以用一元加运算符简化类型转换的写法:
const sortedData = [...data].sort((a, b) => +a.year - +b.year);
内容的提问来源于stack exchange,提问作者Jamie Huff
相关产品推荐
相关产品推荐

