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中有更好的机制.
我有时需要在Python中迭代一个列表,查看"current"元素和"next"元素.到目前为止,我已经完成了以下代码:
for current, next in zip(the_list, the_list[1:]):
# Do something
Run Code Online (Sandbox Code Playgroud)
这有效并且符合我的预期,但是有更多惯用或有效的方法来做同样的事情吗?
我有2个数组:
var a = [1, 2, 3]
var b = [a, b, c]
Run Code Online (Sandbox Code Playgroud)
我想得到的结果是:
[[1, a], [2, b], [3, c]]
Run Code Online (Sandbox Code Playgroud)
这看起来很简单,但我无法弄清楚.
我希望结果是一个数组,两个数组中的每个元素都压缩在一起.
JavaScript中的道格拉斯·克罗克福德(Douglas Crockford)表示"转变通常比流行音乐慢得多".jsPerf 证实了这一点.有谁知道为什么会这样?从一个不成熟的角度来看,他们似乎做了几乎相同的事情.
我有一个链式列表
["root", "foo", "bar", "blah"]
Run Code Online (Sandbox Code Playgroud)
我想使用相邻的对将其转换为元组列表.像这样
[("root", "foo"), ("foo", "bar"), ("bar", "blah")]
Run Code Online (Sandbox Code Playgroud)
目前,我正在使用它来做到这一点:
zipAdj x = tail (zip ("":x) (x++[""]))
Run Code Online (Sandbox Code Playgroud)
但是,我真的不喜欢这种方法.谁能想到更好的方法?如果我很明显地道歉,我对Haskell来说还是比较新的.
我需要调用所有可用的数组元素对的函数.像这样:
[1, 2, 3].pairs(function(pair){
console.log(pair); //[1,2], [1,3], [2,3]
});
Run Code Online (Sandbox Code Playgroud) 是否有一种优雅,功能性的方式来转换这个数组:
[ 1, 5, 9, 21 ]
进入这个
[ [1, 5], [5, 9], [9, 21] ]
我知道我可以forEach使用数组并收集值来创建一个新数组._.lodash没有使用forEach?有一种优雅的方式吗?
javascript arrays functional-programming underscore.js lodash
javascript ×5
arrays ×2
ecmascript-6 ×1
generator ×1
haskell ×1
list ×1
lodash ×1
performance ×1
python ×1
zip ×1