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;
};
