我有数组:[1,2,3,4,5,6,7]
我想实现:[[1,2],[3,4],[5,6],[7]]
我在想Array.map,但它似乎无法映射到一个元素什么?
我有(使用Underscorejs):
arr.map(function(el,idx,arr) { if (idx%2 != 0) return null; if (idx == arr.length-1) return [el]; return [el,arr[idx+1]] }).compact();
这还是有点丑陋.如何实现转换(没有显式循环)?
解决方法
使用模运算符减少数组:
function chunk(arr,n) { return arr.reduce(function (p,c,i) { if (i % n === 0) p.push([]); p[p.length - 1].push(c); return p; },[]); } chunk(arr,2); // [[1,[7]]