插件窝 干货文章 JavaScript数组如何灵活分组:平均分配与索引间隔分组?

JavaScript数组如何灵活分组:平均分配与索引间隔分组?

分组 间隔 分配 数组 764    来源:    2025-03-22

在JavaScript中,数组的分组操作可以通过多种方式实现,具体取决于你想要的分组方式。以下是两种常见的分组方式:平均分配和索引间隔分组。

1. 平均分配

平均分配的目标是将数组元素均匀地分配到指定数量的组中。例如,将数组 [1, 2, 3, 4, 5, 6, 7, 8] 分成3组,结果可能是 [[1, 2, 3], [4, 5, 6], [7, 8]]

function chunkArray(arr, numGroups) {
    const chunkSize = Math.ceil(arr.length / numGroups);
    const result = [];
    for (let i = 0; i < arr.length; i += chunkSize) {
        result.push(arr.slice(i, i + chunkSize));
    }
    return result;
}

const arr = [1, 2, 3, 4, 5, 6, 7, 8];
const numGroups = 3;
console.log(chunkArray(arr, numGroups));
// 输出: [[1, 2, 3], [4, 5, 6], [7, 8]]

2. 索引间隔分组

索引间隔分组的目标是将数组元素按照一定的间隔分配到不同的组中。例如,将数组 [1, 2, 3, 4, 5, 6, 7, 8] 按照间隔2分组,结果可能是 [[1, 3, 5, 7], [2, 4, 6, 8]]

function intervalGroup(arr, interval) {
    const result = Array.from({ length: interval }, () => []);
    for (let i = 0; i < arr.length; i++) {
        result[i % interval].push(arr[i]);
    }
    return result;
}

const arr = [1, 2, 3, 4, 5, 6, 7, 8];
const interval = 2;
console.log(intervalGroup(arr, interval));
// 输出: [[1, 3, 5, 7], [2, 4, 6, 8]]

3. 结合平均分配和索引间隔分组

如果你想要结合平均分配和索引间隔分组,可以先进行平均分配,然后在每个组内进行索引间隔分组。

function combinedGroup(arr, numGroups, interval) {
    const chunked = chunkArray(arr, numGroups);
    return chunked.map(subArr => intervalGroup(subArr, interval));
}

const arr = [1, 2, 3, 4, 5, 6, 7, 8];
const numGroups = 2;
const interval = 2;
console.log(combinedGroup(arr, numGroups, interval));
// 输出: [[[1, 3], [2, 4]], [[5, 7], [6, 8]]]

总结

  • 平均分配:使用 chunkArray 函数将数组均匀分配到指定数量的组中。
  • 索引间隔分组:使用 intervalGroup 函数将数组元素按照指定的间隔分配到不同的组中。
  • 结合平均分配和索引间隔分组:先进行平均分配,然后在每个组内进行索引间隔分组。

根据你的具体需求,可以选择合适的分组方式。