How to split an array into n groups? (factorize or array _.partition)

Let's say I have an array = [0,1,2,3,4,5,6], and I want to β€œsplit” it into 3 arrays based on a reminder after dividing by 3.

so basically I would like something like:

_.my_partition([0,1,2,3,4,5,6], function(item) {return item % 3;}) // [[0,3,6], [1,4],[2,5]] 

(I can use lodash, underscore if ti helps ...)

+2
source share
1 answer

There are several for this:

I. Normal function

 function partition(items, n) { var result = _.groupBy(items, function(item, i) { return Math.floor(i % n); }); return _.values(result); } myArray = [1,2,3,4,5,6,7,8,9,10]; partition(myArray, 3); 

II. Adding a prototype method

 Array.prototype.partition = function(n) { var result = _.groupBy(this, function(item, i) { return Math.floor(i % n); }); return _.values(result); } myArray = [1,2,3,4,5,6,7,8,9,10]; myArray.partition(3) 

Create method _.partitionToGroups

 _.partitionToGroups = function(items, n) { var result = _.groupBy(items, function(item, i) { return Math.floor(i % n); }); return _.values(result); } myArray = [1,2,3,4,5,6,7,8,9,10]; _.partitionToGroups(myArray, 3); 
+5
source