【发布时间】:2015-11-05 12:55:26
【问题描述】:
在问题 Iterate a list as pair (current, next) in Python 中,OP 有兴趣将 Python 列表迭代为一系列 current, next 对。我也有同样的问题,但我想以最简洁的方式在 JavaScript 中完成,也许使用lodash。
使用简单的for 循环很容易做到这一点,但感觉不是很优雅。
for (var i = 0; i < arr.length - 1; i++) {
var currentElement = arr[i];
var nextElement = arr[i + 1];
}
Lodash 几乎可以做到这一点:
_.forEach(_.zip(arr, _.rest(arr)), function(tuple) {
var currentElement = tuple[0];
var nextElement = tuple[1];
})
这个微妙的问题是在最后一次迭代中,nextElement 将是undefined。
当然,理想的解决方案只是一个 pairwise lodash 函数,它只在必要时循环。
_.pairwise(arr, function(current, next) {
// do stuff
});
是否有任何现有的库已经这样做了?还是有另一种我没有尝试过的在 JavaScript 中进行成对迭代的好方法?
澄清:如果arr = [1, 2, 3, 4],那么我的pairwise函数将迭代如下:[1, 2]、[2, 3]、[3, 4],而不是[1, 2]、[3, 4]。这就是 OP 在the original question for Python 中询问的内容。
【问题讨论】:
-
真的不知道你为什么要花这么多心思在这上面。惯用的 JavaScript 方法就是
array.forEach(function (item, index) { var next = array[index + 1]; ... }); -
这可能并不重要,但我很好奇以这种方式迭代的总体目标是什么?
-
@sparrow -- 今天它在单元测试中断言一些存根的调用顺序。过去,我在其他语言的几个应用程序中需要成对迭代(例如 Python 中的生物信息学代码),但我从未对现有的 JavaScript 解决方案完全满意。
标签: javascript iteration lodash