gpt4 book ai didi

JavaScript 的 Ruby 范围的等效代码

转载 作者:行者123 更新时间:2023-12-03 01:19:27 25 4
gpt4 key购买 nike

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)

这可能是一个答案,但我正在寻找更好的代码

  • 比上面的代码更广泛的浏览器支持(无需填充)
  • 更短的代码,例如将开始和结束指定为 Ruby 的代码(我的 JS 示例很难看,因为我写了两次 2000)。

满足其中任何一个的代码是有帮助的。

编辑

我想使用值a在 Vue.js 的 v-for 循环中以内联方式,例如

<option v-for="year in a" :value="year">FY{{year}}</option>

因此单一表达是可取的。

最佳答案

最简单(但不是最短)的解决方案是使用循环:

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())

:)

关于JavaScript 的 Ruby 范围的等效代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51826109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com