logik - Summa av på varandra följande nummer JavaScript


Givet en matris av heltal.

Till exempel:

[1,2,2,2,5,7]

Jag vill skriva ut alla grupper av konsekutiva identiska siffror med deras summa.

Utdata bör vara:

[1,6,5,7]

Några tankar om hur man gör detta?

Svar #1

Du kan använda Array.prototype.reduce() med ett tillfälligt objekt.

var array = [1, 2, 2, 2, 5, 7],
    result = array.reduce(function (r, a) {
        if (r.last === a) {
            r.array[r.array.length - 1] += a;
        } else {
            r.array.push(a);
            r.last = a;
        }
        return r;
    }, { array: [], last: null }).array;

document.write('<pre>' + JSON.stringify(result,0,4) + '</pre>');

Svar #2

Jag löste det på det här sättet.

const sumConsecutives = (s) => {
  let result = [], temp = 0;
  for(let i = 0; i<s.length; i++) {
    if(s[i] === s[i+1]){
      temp += s[i];
    } else if(s[i] !== s[i+1]){
      result.push(temp + s[i]);
      temp = 0;
    }
  }
  return result;
};