【问题标题】:how to split array into n groups? (factorize, or _.partition array) [duplicate]如何将数组分成n组? (分解,或_.partition数组)[重复]
【发布时间】:2015-06-14 20:19:00
【问题描述】:

假设我有一个数组 = [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]]

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

【问题讨论】:

    标签: javascript underscore.js lodash


    【解决方案1】:

    有多种方法可以做到这一点:

    我。正常功能

    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()函数。
    • 感谢@AdamBoduch。让我们将其重命名为 partitionToGroups
    • 在 lodash 4 中,index 参数已从 groupBy 回调中移除,因此您需要自行跟踪。
    • 第一个“正常功能”对拆分它们没有任何作用。我将代码复制粘贴到控制台,它在另一个数组中输出一个包含 10 个项目的数组:/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 2015-03-28
    • 2012-01-01
    • 1970-01-01
    相关资源
    最近更新 更多