javascript - 如何将数组分成n组? (因式分解,或 _.partition 数组)

标签 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]]

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

最佳答案

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

我。正常功能

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);

二。添加原型(prototype)方法

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);

关于javascript - 如何将数组分成n组? (因式分解,或 _.partition 数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29538967/

相关文章:

javascript - 为什么下划线与其类型检查不一致?

javascript - Lodash:提取属性、分割数组、获取唯一值

javascript - Object.keys 等效的 lodash 方法

javascript - 更改 d3.js 中鼠标悬停事件的 X 和 Y 坐标值

javascript - 如何在页面加载事件之后立即获得页面的 scrollTop?

javascript - Backbone.js Jade 和循环模型

javascript - 如何在两个对象数组之间推送不存在的数据

javascript - 想要在 Javascript-CSS 过滤器中保留 "ALL"选项

javascript - 在父div上方创建div

javascript - 使用backbone和Express渲染模板