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

JavaScript中如何动态生成年份字典对象数组?

推荐重构方案

方案1:Array.from 实现(最简洁,现代JS优先)

这是目前最简洁易读的实现方式,直接通过数组长度映射生成目标对象,无需手动遍历push元素:

const startYear = 2010
const endYear = 2018
// 计算需要生成的年份总数,起止年份都包含所以+1
const years = Array.from({ length: endYear - startYear + 1 }, (_, index) => {
  const currentYear = startYear + index
  return { value: currentYear, label: String(currentYear) }
})

和原有实现相比的优化点:

  • 无需手动初始化空数组、维护循环变量,逻辑更聚合
  • 把endYear定义为实际需要的结束年份(2018),语义更直观,避免出现开区间语义混淆
  • 用String()替代JSON.stringify()转字符串,语义更匹配,性能也更优

方案2:优化版for循环(性能最高,兼容所有环境)

如果场景需要兼容低版本浏览器,或者对性能要求极高,原有for循环只要做少量优化即可:

const startYear = 2010
const endYear = 2018
const years = []
// 直接用year作为循环变量,语义更清晰
for (let year = startYear; year <= endYear; year++) {
  years.push({ value: year, label: String(year) })
}

额外扩展

如果需要生成倒序的年份数组,只需要调整Array.from的映射逻辑即可:

const years = Array.from({ length: endYear - startYear + 1 }, (_, index) => {
  const currentYear = endYear - index
  return { value: currentYear, label: String(currentYear) }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:18:02