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

JavaScript如何从人员对象数组中返回最长寿者的姓名而非年龄数值

问题解决思路

你现在的问题出在map步骤只返回了年龄数值,丢失了和原人物对象的关联,自然没法拿到对应的姓名。调整方向很简单:直接对完整的people数组做排序,排序时实时计算两个人的年龄做比较,排序完成后拿到的就是最长寿的完整人物对象,再取name属性即可。

修改后的参考代码
const people = [
  {
    name: "Carly",
    yearOfBirth: 1066,
  },
  {
    name: "Ray",
    yearOfBirth: 1962,
    yearOfDeath: 2011,
  },
  {
    name: "Jane",
    yearOfBirth: 1912,
    yearOfDeath: 1941,
  },
]

// 先封装计算年龄的工具函数,复用逻辑更清晰
const getAge = function(person) {
  const death = person.yearOfDeath || new Date().getFullYear();
  return death - person.yearOfBirth;
}

const findTheOldest = function() {
  // 直接对people数组按年龄升序排列
  const sortedPeople = people.sort((a, b) => getAge(a) - getAge(b));
  // 数组最后一项就是年龄最大的人,返回姓名即可
  return sortedPeople[sortedPeople.length - 1].name;
};

findTheOldest(); // 执行结果为 "Carly"
核心调整点说明
  • 新增单独的getAge工具函数,避免相同的年龄计算逻辑重复编写,代码更易维护
  • 没有单独提取年龄数组,直接对原人物对象数组排序,保留了所有属性信息
  • 排序后直接取最大年龄对应的完整对象,除了name外如果后续需要其他属性也可以直接获取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:54:04