使用LoDash将数组映射到元组数组

Sea*_*son 3 javascript lodash

我有一个数组,如:

var foo = [1, 2, 3, 4, 5];
Run Code Online (Sandbox Code Playgroud)

我想把它映射到:

var bar = [[1,2], [2,3], [3,4], [4,5], [5,1]];
Run Code Online (Sandbox Code Playgroud)

我不需要处理长度foo为0或1的场景.

我天真的做法是:

var foo = [1, 2, 3, 4, 5];
var bar = _.map(foo, function(value, index) {
  return index < foo.length - 1 ? [value, foo[index + 1]] : [value, foo[0]];
});

console.log(bar);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/lodash/3.10.1/lodash.js"></script>
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更明确的方式来表达这种映射.

mar*_*.47 6

使用简单的lodash.首先从数组中删除第一个元素,追加它,然后用原始数组压缩它:

var a = [1,2,3,4,5]
var b = _.zip(a, _.concat(_.drop(a), a[0]))
Run Code Online (Sandbox Code Playgroud)

结果:

console.log(b)
[[1, 2], [2, 3], [3, 4], [4, 5], [5, 1]]
Run Code Online (Sandbox Code Playgroud)