映射数组使用LoDash
问题描述:
元组阵列
我有一个数组,例如:映射数组使用LoDash
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>
我不知道是否有表达这种映射一个更明确的方式。
答
使用朴素简单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]]
答
获取在阵列的索引
n
的元素。如果n
为负数,则返回从结尾开始的第n个元素。
刚刚获得同级以相反的顺序
var bar = _.map(foo, function(val, index) {
return [val, _.nth(foo, (index + 1) - foo.length)];
});
这个问题更适合[代码评审](HTTP: //codereview.stackexchange.com/)。您已经解决了这个问题,但您正在寻求改进方向。 –
@EmileBergeron请注意Code Review需要真正的代码;包含像'foo'这样的占位符的问题在那里将成为焦点话题。 –
@ 200_success是的你是对的,我个人不是Code Review的用户,所以我的经验是有限的,但OP可以采用他正在使用的**实际功能**,它可以工作。它甚至会更好,因为对于他的场景,可能有比组合阵列更好的解决方案。 –