如何将数组分成n个组?(因子化,或_.partition数组)
如何将数组分成n个组?(因子化,或者_.partition数组)出现的原因是需要将一个数组按照指定的组数进行分割。下面提供了三种解决方法。
第一种方法是使用普通函数。代码如下:
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);
第二种方法是添加一个原型方法。代码如下:
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)
第三种方法是创建一个_.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);
需要注意的是,第三种方法可能会与lodash中已有的partition()函数冲突。因此,可以将其命名为partitionToGroups。
在lodash 4中,groupBy回调函数中的index参数被移除,因此需要自行跟踪索引。
需要注意的是,第一种方法的普通函数没有进行任何分割操作。将代码复制粘贴到控制台中,输出结果是一个包含10个元素的数组,而不是分割后的数组。