如何将数组拆分为n组?(factorize,或_.partition数组)

Nov*_*tor 3 javascript underscore.js lodash

假设我有一个数组= [0,1,2,3,4,5,6]并且我希望将它"划分"为3个数组,基于3除以后的提醒.

所以基本上我想要的东西:

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

(我可以使用lodash,下划线,如果有帮助......)

Jos*_*Lat 6

有多个这样做:

一,正常功能

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);
Run Code Online (Sandbox Code Playgroud)

II.添加原型方法

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)
Run Code Online (Sandbox Code Playgroud)

创建_.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);
Run Code Online (Sandbox Code Playgroud)

  • 第一个“正常功能”对拆分它们没有任何作用。我将代码复制粘贴到控制台,它在另一个数组中输出一个包含 10 个项目的数组:/ (3认同)