如何从生命时段字符串数组中计算个体寿命值?
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
相关产品推荐
相关产品推荐

