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

