x在JavaScript中循环时间的典型方法是:
for (var i = 0; i < x; i++)
doStuff(i);
Run Code Online (Sandbox Code Playgroud)
但我不想使用++运算符或根本没有任何可变变量.那么,在ES6中,有x另一种方式循环时间吗?我喜欢Ruby的机制:
x.times do |i|
do_stuff(i)
end
Run Code Online (Sandbox Code Playgroud)
在JavaScript/ES6中有类似的东西吗?我可以作弊并制造自己的发电机:
function* times(x) {
for (var i = 0; i < x; i++)
yield i;
}
for (var i of times(5)) {
console.log(i);
}
Run Code Online (Sandbox Code Playgroud)
我当然还在用i++.至少它看不见:),但我希望在ES6中有更好的机制.
以更多功能方式执行以下操作的最佳方法是什么(使用ES6/ES7)
let cols = [];
for (let i =0; i <= 7; i++) {
cols.push(i * i);
}
return cols;
Run Code Online (Sandbox Code Playgroud)
我试过,
return [ ...7 ].map(i => {
return i * i;
});
Run Code Online (Sandbox Code Playgroud)
但那转化为
[].concat(7).map(function (n) {
return n * n;
});
Run Code Online (Sandbox Code Playgroud)
这不是我的预期.
@pavlo.的确,这是一个错误.我正在使用JSX,例如,我想要7个div,(未经测试)
let cols = [];
for (let i =0; i <= 7; i++) {
cols.push(<div id={i}> ... </div>)
}
return cols;
Run Code Online (Sandbox Code Playgroud)
所以这个想法确实是为了减少临时变量和程序感觉的数量.
javascript functional-programming ecmascript-harmony ecmascript-6
我一直发现rangeJavaScript中缺少函数,因为它在python和其他版本中可用?有没有简洁的方法来生成ES2015中的数字范围?
编辑:我的问题与提到的副本不同,因为它特定于ES2015而不是ECMASCRIPT-5.此外,我需要范围从0开始而不是特定的起始编号(尽管如果那样会很好)
我想知道是否有更好的方法可以为数组的部分和生成更好的性能的解决方案。
给定一个说的数组x = [ 0, 1, 2, 3, 4, 5 ],我生成了项目的子数组,然后计算了每个数组的总和,得出:
[ 0, 1, 3, 6, 10, 15 ]
Run Code Online (Sandbox Code Playgroud)
因此,完整的代码是:
x.map((y,i)=>x.filter((t,j)=>j<=i))
.map(ii=>ii.reduce((x,y)=>x+y,0))
Run Code Online (Sandbox Code Playgroud)
我想知道平面图或其他数组方法是否具有不需要扩展每个子数组的解决方案。