我有一个数组如:
var foo = [1, 2, 3, 4, 5];
我想把它映射到:
var bar = [[1,2], [2,3], [3,4], [4,5], [5,1]];
我不需要处理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);
<script src="https://cdn.jsdelivr.net/lodash/3.10.1/lodash.js"></script>
我想知道是否有更明确的方式来表达这种映射。
答案 0 :(得分:5)
使用简单的lodash。首先从数组中删除第一个元素,追加它,然后用原始数组压缩它:
var a = [1,2,3,4,5]
var b = _.zip(a, _.concat(_.drop(a), a[0]))
结果:
console.log(b)
[[1, 2], [2, 3], [3, 4], [4, 5], [5, 1]]
答案 1 :(得分:3)
获取数组索引
n
处的元素。如果n
为负数,则返回结尾的第n个元素。
以相反的顺序得到兄弟姐妹
var bar = _.map(foo, function(val, index) {
return [val, _.nth(foo, (index + 1) - foo.length)];
});