You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:27:03