首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将JavaScript数组聚合到几个具有不同元素长度的数组中?

将JavaScript数组聚合到几个具有不同元素长度的数组中?
EN

Stack Overflow用户
提问于 2011-10-14 13:56:27
回答 1查看 209关注 0票数 0

我有一个101个值的数组(代表0-100岁的人)。

最好是一种快速而简单的方法来一次构建这些聚集数组:

代码语言:javascript
运行
复制
var input = [55,33,12 .. 98 more]

var output = {   

    //same as input
    i1 = [],

    //0-5, 6-10, 11-15 ... 96-100
    i5 = [],

    //0-10, 11-20, 21-30 ... 91-100
    i10 = [],

    //0-20, 21-40, 41-60 ... 81-100   
    i20 = [],
}

顺便提一句:您是按照间隔("i1“、"i5")还是按组/元素的数量("g100”、"g20")来命名这些聚合数组--如果其他程序员遇到这些定义,什么更直观?

EN

回答 1

Stack Overflow用户

发布于 2011-10-14 15:27:17

您可以重用聚合的结果来计算下一个数组。

代码语言:javascript
运行
复制
// sums up each n numbers from the input array
//
function groupSum(inarray, n) {
    var outarray = [];
    var sum = 0;
    for (var i = 0; i < inarray.length; i++) {
        sum += inarray[i];
        if (i % n == n - 1) {outarray.push(sum); sum = 0;}
    }
    // add the last element
    if (i % n != 0) { outarray.push(sum); }

    return outarray;
}

var input = [55, 33, 12, 98, /* more numbers here */ 3, 4, 1, 2, 0, 7];

var output = {};
output.i1 = input;
output.i5 = groupSum(output.i1, 5);
output.i10 = groupSum(output.i5, 2);
output.i20 = groupSum(output.i10, 2);

请注意,正如xanatos所说的,性能在这里并不是什么大问题。

PS1:不确定您是试图使输出成为对象(如本代码中所示)还是2D数组。

PS2:由于第一个组总是多一个元素,您可能需要针对这种特殊情况稍微调整代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7768702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档