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

Python按对象属性拆分对象列表并获取最大版本对象

按Amenity分组并获取每组最高Version的对象

嘿,这个需求其实挺典型的,咱们分两步来搞定:先把列表按amenity分组,再从每个分组里挑出version最大的对象。

第一步:按Amenity分组

你可以用JavaScript的reduce方法轻松实现分组,把相同amenity的对象归到同一个数组里:

const original_list = [ 
  { amenity: "Parking", amount: 120, version: 1, percentage: 4, id: 1 }, 
  { amenity: "Pool", amount: 300, version: 2, percentage: 10, id: 5 }, 
  { amenity: "Pool", amount: 200, version: 1, percentage: 10, id: 2 }
];

// 分组操作
const groupedByAmenity = original_list.reduce((result, currentItem) => {
  // 如果当前amenity还没在结果里,先创建一个空数组
  if (!result[currentItem.amenity]) {
    result[currentItem.amenity] = [];
  }
  // 把当前对象加入对应amenity的数组
  result[currentItem.amenity].push(currentItem);
  return result;
}, {});

// 现在你就能拿到想要的子列表了
const vlist_a = groupedByAmenity.Parking;
const list_b = groupedByAmenity.Pool;

运行这段代码后,vlist_a就是仅包含Parking对象的数组,list_b就是两个Pool对象的数组,完全符合你的要求。

第二步:从每个分组获取Version最大的对象

接下来用reduce结合箭头函数(也就是你说的lambda表达式)就能找出每个分组里version最大的对象,这里有两种实用方式:

方式一:批量获取所有分组的最大Version对象

如果你想一次性拿到所有amenity对应的最大version对象,可以这样写:

const maxVersionItems = Object.entries(groupedByAmenity).map(([amenity, items]) => {
  // 用reduce遍历数组,保留version更大的对象
  return items.reduce((maxItem, current) => {
    return current.version > maxItem.version ? current : maxItem;
  });
});

console.log(maxVersionItems);
// 输出:[
//   { amenity: "Parking", amount: 120, version: 1, percentage: 4, id: 1 },
//   { amenity: "Pool", amount: 300, version: 2, percentage: 10, id: 5 }
// ]

方式二:单独获取某个分组的最大Version对象

如果你只需要针对某个特定分组(比如Pool)获取最大version对象,直接对该分组数组用reduce即可:

const poolMaxVersionItem = list_b.reduce((max, item) => {
  return item.version > max.version ? item : max;
});

console.log(poolMaxVersionItem);
// 输出:{ amenity: "Pool", amount: 300, version: 2, percentage: 10, id: 5 }

简单说下逻辑:reduce会遍历数组里的每一个元素,每次对比当前元素和之前保存的「最大version对象」,如果当前元素的version更大,就替换掉之前的对象,最终剩下的就是整个分组里version最大的那个。

内容的提问来源于stack exchange,提问作者Stephen-Njoroge

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:02:52