我正在寻找下面的任何替代方法来创建一个包含1到N的JavaScript数组,其中N仅在运行时已知.
var foo = [];
for (var i = 1; i <= N; i++) {
foo.push(i);
}
Run Code Online (Sandbox Code Playgroud)
对我而言,感觉应该有一种没有循环的方法.
有没有办法重复定义的次数而不是总是迭代一个数组?
例如,下面我希望列表项显示5次,假设$scope.number等于5,另外增加数量,以便每个列表项增量如1,2,3,4,5
期望的结果:
<ul>
<li><span>1</span></li>
<li><span>2</span></li>
<li><span>3</span></li>
<li><span>4</span></li>
<li><span>5</span></li>
</ul>
Run Code Online (Sandbox Code Playgroud) ...例如...
<div class="month" *ngFor="#item of myCollection; #i = index">
...
</div>
Run Code Online (Sandbox Code Playgroud)
有可能做......
<div class="month" *ngFor="#item of 10; #i = index">
...
</div>
Run Code Online (Sandbox Code Playgroud)
...没有诉诸非优雅的解决方案,如:
<div class="month" *ngFor="#item of ['dummy','dummy','dummy','dummy','dummy',
'dummy','dummy','dummy']; #i = index">
...
</div>
Run Code Online (Sandbox Code Playgroud)
?
说我有以下复选框:
<input type="checkbox" value="1-25" />
Run Code Online (Sandbox Code Playgroud)
要获得定义我正在寻找的范围边界的两个数字,我使用以下jQuery:
var value = $(this).val();
var lowEnd = Number(value.split('-')[0]);
var highEnd = Number(value.split('-')[1]);
Run Code Online (Sandbox Code Playgroud)
然后,我如何创建一个包含lowEnd和之间所有整数的数组highEnd,包括lowEnd和highEnd自己?对于这个具体的例子,显然,结果数组将是:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
Run Code Online (Sandbox Code Playgroud) 我一直发现rangeJavaScript中缺少函数,因为它在python和其他版本中可用?有没有简洁的方法来生成ES2015中的数字范围?
编辑:我的问题与提到的副本不同,因为它特定于ES2015而不是ECMASCRIPT-5.此外,我需要范围从0开始而不是特定的起始编号(尽管如果那样会很好)
创建这个数组最简洁的方法是什么:
var x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
Run Code Online (Sandbox Code Playgroud)
例如,一个for循环:
var x = [];
for (var i=1;i<=20;i++) {
x.push(i);
}
Run Code Online (Sandbox Code Playgroud)
或while循环:
var x = [], i = 1, endInt = 20;
while (i <= endInt) {
x.push(i);
i++;
}
Run Code Online (Sandbox Code Playgroud)
是否会有其他更简洁的例子 - 换句话说 - 更少的代码?我正在考虑像Ruby这样的东西,我认为等效的代码就像这样简单1..20.我不知道JavaScript中的语法,但我想知道是否有更短的方法来做同样的事情.
更新:我没有考虑删除分号或var问题的答案,但我不得不承认这个问题意味着.我对算法比对剃须字节更感兴趣.对不起,如果我不清楚!另外,将它变成一个函数很简单,只需拍打function range(start, end) { /* guts here */ }它就可以了.问题是对"胆量"有新的方法.
在Ruby中,我可以做到('a'..'z').to_a并且得到['a', 'b', 'c', 'd', ... 'z'].
jQuery或Javascript提供类似的构造吗?
我想迭代一系列日历日期,每次迭代为+1天.我会在Java中使用围绕JodaTime构建的东西 - 在NodeJS中有类似的东西吗?
用谷歌搜索后,我找到了两个解决方案:
var data = [...Array(10).keys()];
console.log(data);
var data1 = Array(8).fill().map((_, i) => i);
console.log(data1);Run Code Online (Sandbox Code Playgroud)
data1显示[0,1,...,7]但是数据只显示[[object Array Iterator]]我如何实际看到数字.
我需要它来对数字进行一些迭代(Euler项目的一部分).
以前我在Python中做了很多Euler挑战.现在我决定重新访问它并尽可能多地使用JS(尽可能多的ES6语法)来帮助我发展我的js技能.