繁体   English   中英

减少和求和阵列位置

[英]Reduce and Sum Array positions

让我们说我有这个数组:

var likes = [4,7,3,11,3,73,78,34,7,13];

但是,由于某些限制,我只能使用5的长度。 因此,我希望将其“转换”为5的数组长度,并通过平均分配其他位置。

有人知道我该怎么办?

也许这会解决你的问题:

var likes = [4,7,3,11,3,73,78,34,7,13],
    result_array = [ ];

for(var i = 0; i < likes.length; i++)
{
   if(i % 2)
   {
       var new_val = likes[i - 1] + likes[i];
       result_array.push(new_val);
   }
}

在这里查看一个有效的jsFiddle

这将导致新数组包含[ 11, 14, 76, 112, 20 ] ,并且当新值添加到初始数组时,长度也会增加。

既然你不清楚你想要什么,我也会发一个答案。 无论您的输入有多大,此代码都会在输出数组中保持固定长度5。

var input = [4,7,3,11,3,73,78,34,25,7,13,19,2],
    max = 5,
    out = [];

var adjacentItems = Math.ceil(input.length / max);
for(var i=0; i<input.length; i += adjacentItems) {
    var aSum = 0;
    for(var j=i; j<Math.min(i+adjacentItems, input.length); j++) {
        aSum += input[j];
    }
    out.push(aSum);
}

看看小提琴

最后,我想我找到了答案! :)如果您有任何建议,请评论!

var likes = [1,2,3,4,5,6,7,8,9,10];
    result_array = [];
    result_array2 = [];    
    max = 8;

if (likes.length>max){
    result_array = likes;
    for (var i = 0; i < max; i++) {
            var res = (likes.length - max) / max
            var new_val = (result_array[i] + (result_array[i+1] * res));
            result_array2.push(new_val);

    }

result_array = [];
result_array = result_array2;

}else{
result_array=likes
}

alert(result_array);

请在这里查看代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM