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

如何从给定对象中提取careerID值最高的careerLevels元素?

实现需求的JavaScript技术方案

核心思路

咱们要做的事儿拆成两步就很清晰:

  1. 从careerLevels数组里筛选出careerID数值最大的那个元素
  2. 把这个元素里的careerID字段移除,剩下的就是最终需要的结果

代码实现

这里给你两种实用的实现方式,你可以根据自己的代码习惯选择:

方式一:用reduce高效定位最大值元素

const input = { 
  "careerLevel": "Associate", 
  "careerLevels": [ 
    { "201609": 21, "201610": 22, "201611": 23, "careerID": "10000120" }, 
    { "201609": 31, "201610": 32, "201611": 33, "careerID": "10000130" }
  ] 
};

// 遍历数组,找到careerID最大的元素
const maxCareerItem = input.careerLevels.reduce((prev, curr) => {
  // 必须转成数字再比较,避免字符串排序的坑
  return Number(curr.careerID) > Number(prev.careerID) ? curr : prev;
});

// 用解构赋值移除careerID字段,生成结果
const { careerID, ...output } = maxCareerItem;

console.log(output); 
// 输出: {"201609": 31, "201610": 32, "201611": 33}

方式二:先排序再取最大值(更直观的写法)

const input = { 
  "careerLevel": "Associate", 
  "careerLevels": [ 
    { "201609": 21, "201610": 22, "201611": 23, "careerID": "10000120" }, 
    { "201609": 31, "201610": 32, "201611": 33, "careerID": "10000130" }
  ] 
};

// 先复制数组再按careerID从大到小排序(避免修改原数组)
const sortedCareers = [...input.careerLevels].sort((a, b) => {
  return Number(b.careerID) - Number(a.careerID);
});

// 取排序后的第一项,移除careerID字段
const { careerID, ...output } = sortedCareers[0];

console.log(output);
// 输出: {"201609": 31, "201610": 32, "201611": 33}

关键注意点

  • 一定要把careerID转成数字再比较!如果直接用字符串对比,比如"10000130"和"999999",字符串排序会错误认为"999999"更大。
  • 用解构赋值{ careerID, ...output }不会修改原数组里的元素,是更安全的做法;如果直接用delete maxCareerItem.careerID会改变原对象,可根据你的场景选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:54:40