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

如何从生命时段字符串数组中计算个体寿命值?

Hey,我来帮你搞定这个计算寿命的函数!根据你的需求,我们可以用JavaScript的数组方法快速实现这个功能,下面是具体的方案:

实现getLifespan函数计算寿命值

基础版本(匹配你的示例需求)

首先是最基础的实现,完全适配你给出的数组格式(每个元素都是出生年份-死亡年份的完整字符串):

function getLifespan(array) {
  // 遍历数组,将每个生命时段字符串转换为寿命数值
  return array.map(lifespanEntry => {
    // 分割出生和死亡年份
    const [birth, death] = lifespanEntry.split('-');
    // 转换为数字后计算差值
    return Number(death) - Number(birth);
  });
}

代码解释

  • 用Array.map()方法遍历输入数组,它会返回一个新数组,每个元素是原数组元素转换后的结果,刚好符合我们需要的“每个人生对应一个寿命值”的需求。
  • split('-')把每个字符串按-分割,得到包含出生年份和死亡年份的数组,再用解构赋值直接拿到两个变量。
  • 用Number()把字符串转成数字,然后相减得到寿命。

测试示例

用你给出的数组测试:

let array = ["1910-1997", "1745-1790", "1660-1740"];
console.log(getLifespan(array)); // 输出: [87, 45, 80]

增强版本(处理边界情况)

如果实际场景中可能存在未填写死亡年份(表示当前在世)或者格式错误的条目,可以给函数加一些容错处理:

function getLifespan(array) {
  return array.map(lifespanEntry => {
    const [birthStr, deathStr] = lifespanEntry.split('-');
    // 转换为数字,空字符串会被转成NaN
    const birthYear = Number(birthStr);
    // 如果死亡年份为空,用当前年份代替
    const deathYear = deathStr ? Number(deathStr) : new Date().getFullYear();

    // 校验年份是否有效:不能是NaN,且死亡年份不能早于出生年份
    if (isNaN(birthYear) || isNaN(deathYear) || deathYear < birthYear) {
      return null; // 这里可以根据需求返回错误提示,比如"无效的寿命格式"
    }

    return deathYear - birthYear;
  });
}

比如测试包含在世人员的数组:

let arrayWithAlive = ["1985-", "1910-1997", "invalid-entry"];
console.log(getLifespan(arrayWithAlive)); 
// 假设当前年份是2024,输出: [39, 87, null]

这样函数的鲁棒性就更强了,能应对更多实际情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 20:13:10