如何用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
相关产品推荐
相关产品推荐

