假设我们有一个数组[1,2,3,4,5,6],我想得到一个新数组[[1,2],[3,4],[5,6]]。我不想使用for循环。我想使用map-reduce或使用最佳实践解决它但我没有得到如何使用map-reduce。请帮忙。
答案 0 :(得分:0)
您可以使用remainder operator let identifier: String!
var destinationTest: HasContext!
switch identifier {
case "Add Exercise":
destinationTest = segue.destination as! HasContext
case "addExerciseInCollectionView":
destinationTest = segue.destination as! HasContext
default:
break
}
destinationTest.context = self.context
进行检查。如果为零,则推送到最后插入的数组,否则将生成一个新数组。
%

var array = [1, 2, 3, 4, 5, 6],
result = array.reduce(function (r, a, i) {
i % 2 ? r[r.length - 1].push(a) : r.push([a]);
return r;
}, []);
console.log(result);

答案 1 :(得分:0)
您可以使用临时对象,但我不认为为此目的进行缩减。恕我直言,我使用for循环。
[1, 2, 3, 4, 5, 6].reduce(
function(a,b) {
if(a.val) {
a.arr.push([a.val, b]);
a.val = false;
} else {
a.val = b;
} return a;
}, {
arr: [],
val: false
}
).arr
答案 2 :(得分:0)
您可以使用Array.of()
,Array.prototype.slice()
var arr = [1,2,3,4,5,6];
var res = Array.of(arr.slice(0,2), arr.slice(2,4), arr.slice(4));
答案 3 :(得分:0)
您可以尝试使用递归函数。它还考虑了具有奇数长度的数组的情况。
var a = [1, 2, 3, 4, 5, 6, 7];
function div(arr) {
return arr.length <= 1 ? [arr] : [[arr[0], arr[1]]].concat(div(arr.slice(2)));
}
console.log(div(a));
&#13;