将项目归为for循环

时间:2018-07-01 19:03:17

标签: javascript

我使用JavaScript,遍历一个值数组。

var values = [1, 2, 1, 3, 1, 3, 4, 1]
for (let i = 0; i < values.length; i++) {
  console.log(values[i])
}

我想获取每组4的总和。我可以使用以下命令在多个for循环中完成此操作:

var values = [1, 2, 1, 3]
var sum1 = 0
for (let i = 0; i < values.length; i++) {
  sum1 += parseInt(values[i]);
}

var values = [1, 3, 4, 1]
var sum2 = 0
for (let i = 0; i < values.length; i++) {
  sum2 += parseInt(values[i]);
}

如何使用一个for循环将4分组并获得每个组的值之和?

3 个答案:

答案 0 :(得分:2)

可以slice()数组和reduce()每个子数组

var values = [1, 2, 1, 3, 1, 3, 4, 1]

var sums =[];

for(let i=0; i< values.length; i=i+4){
   const subArr= values.slice(i,i+4);
   const sum = subArr.reduce((a,c)=>a+c)
   sums.push(sum)
}

console.log(sums)

答案 1 :(得分:0)

您可以使用计数器。在达到组数限制时重置计数器和求和变量,如下例所示:

var values = [1, 2, 1, 3, 1, 3, 4, 1];
var result = [];
var counter = 0;
var sum = 0;
for(var i = 0; i < values.length; i++){
  counter++;
  sum += values[i];
  if(counter === 4 || i === values.length-1){
    result.push(sum);
    counter = 0;
    sum = 0;
  }
}

  
  console.log(result);

答案 2 :(得分:0)

您可以将一个数组作为结果集,然后将索引除以4,然后取整数值以求和。

var values = [1, 2, 1, 3, 1, 3, 4, 1],
    grouped = values.reduce((r, v, i) => {
        var k = Math.floor(i / 4);
        r[k] = r[k] || 0;
        r[k] += v;
        return r;
    }, []);
    
console.log(grouped);