我有一个数组,如:
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)
我想知道是否有更明确的方式来表达这种映射.
使用简单的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)