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

如何用JavaScript从2026倒推生成至2022的年份数组?

问题描述

我们定义了:

const currentYear = 2026

需要生成一个从2026倒推至2022的数组,格式如下:

[2026, 2025, 2024, 2023, 2022]

但当前使用的代码未达到预期效果:

const currentYear = 2026

const newArray = [currentYear].map(i => {
  const year = i - 1;
  if(year >= 2022) return year
});

console.log([currentYear, ...newArray])
原代码问题分析

你用[currentYear].map()的时候,数组里只有一个元素(2026),所以map只会执行一次,最终newArray里只有2025。展开后得到的是[2026, 2025],自然无法生成完整的年份序列。

正确解法

解法一:for循环(直观易懂)

通过循环从currentYear递减到2022,依次把年份加入数组:

const currentYear = 2026
const startYear = 2022
const yearArray = []

for (let year = currentYear; year >= startYear; year--) {
  yearArray.push(year)
}

console.log(yearArray) // [2026, 2025, 2024, 2023, 2022]

解法二:Array.from(简洁写法)

利用Array.from的第二个参数(映射函数)直接生成数组:

const currentYear = 2026
const startYear = 2022
const yearArray = Array.from({ length: currentYear - startYear + 1 }, (_, index) => currentYear - index)

console.log(yearArray) // [2026, 2025, 2024, 2023, 2022]

这里length计算的是数组元素总数:2026-2022+1=5,然后每个位置的年份是currentYear - index(index从0到4,对应2026、2025...2022)。

解法三:Array.fill + map

先创建指定长度的数组,再通过map替换成对应年份:

const currentYear = 2026
const startYear = 2022
const yearArray = Array(currentYear - startYear + 1).fill().map((_, index) => currentYear - index)

console.log(yearArray) // [2026, 2025, 2024, 2023, 2022]

Array(n).fill()会生成一个长度为n、元素为undefined的数组,之后map遍历每个位置计算年份。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:35:15