a = (2000..Date.today.year).to_a
在Ruby中,以上表达式返回[2000, 2001, ...snip..., 2018]
我想知道等效的JavaScript代码。
a = Array.from({length: new Date().getFullYear() - 2000 + 1}, (_, i) => i + 2000)
这可能是一个答案,但是我正在寻找更好的代码
2000
以来,我的JS示例很丑)。同时满足任一条件的代码会有所帮助。
编辑
我想在Vue.js的v-for循环中以内联方式使用值a
<option v-for="year in a" :value="year">FY{{year}}</option>
因此最好使用单个表达式。
答案 0 :(得分:1)
最简单(但不是最短)的解决方案是使用循环:
a = [];
for (var year = new Date().getFullYear(); year >= 2000; --year)
a.unshift(year);
>>>> [2000, 2001, ..., 2017, 2018]
或者也许定义一个函数:
function range(from, to) {
var res = [];
for (var i = from; i <= to; ++i) res.push(i);
return res;
}
棘手的解决方案如下:
function range(from, to) {
return [...Array(to - from + 1).keys()].map(function(x){return x + from});
}
编辑:如果您确实有决心,则可以使所有内容成为表达式:
(function(a, b){return [...Array(b-a+1).keys()].map(function(x){return x+a;})})(2000, new Date().getFullYear())
:)