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

如何根据对象内部数组的car year对对象数组进行排序

根据对象内部数组的车辆年份排序对象数组

首先得明确你想基于数组里的哪辆车的年份来排序——是每个对象里最新的车辆年份、最老的,还是数组中某一个特定位置的车?下面给你几种常见场景的实现方法:

1. 按每个对象里最新的车辆年份排序(降序/升序)

如果想让拥有最新车辆的对象排在前面,我们可以先提取每个对象里cars数组的最大年份,再用这个值做比较:

升序(最老的在前)

const sortedByOldestCar = people.sort((a, b) => {
  // 获取a对象里的最大车年份
  const maxYearA = Math.max(...a.cars.map(car => car.year));
  // 获取b对象里的最大车年份
  const maxYearB = Math.max(...b.cars.map(car => car.year));
  // 升序:小的在前
  return maxYearA - maxYearB;
});

降序(最新的在前)

只需要把比较结果反过来:

const sortedByNewestCar = people.sort((a, b) => {
  const maxYearA = Math.max(...a.cars.map(car => car.year));
  const maxYearB = Math.max(...b.cars.map(car => car.year));
  return maxYearB - maxYearA;
});

2. 按每个对象里最老的车辆年份排序

类似上面的逻辑,只是把Math.max换成Math.min:

const sortedByEarliestCar = people.sort((a, b) => {
  const minYearA = Math.min(...a.cars.map(car => car.year));
  const minYearB = Math.min(...b.cars.map(car => car.year));
  // 升序:最老的在前
  return minYearA - minYearB;
});

3. 按对象里cars数组的第一个车辆年份排序

如果你的需求是固定用每个对象里第一辆车的年份来排序,直接取数组索引0即可:

const sortedByFirstCarYear = people.sort((a, b) => {
  return a.cars[0].year - b.cars[0].year;
});

注意事项

  • sort()方法会修改原数组,如果不想改变原数组,先创建一个副本再排序:
    const sortedArray = [...people].sort(/* 比较函数 */);
    
  • 要确保每个对象的cars数组都不为空,且每个car都有year属性,避免出现NaN导致排序异常。如果有不确定的情况,可以加个默认值处理:
    const maxYearA = Math.max(...a.cars.map(car => car.year || 0));
    

内容的提问来源于stack exchange,提问作者Luxor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:40:23