We could solve this using iteration. The code will look something like this:
var numbers = [1, 2, 2, 2, 5, 7];
var newNumbers = [];
for (var i = 0; i < numbers.length; i++) {
numbers = numbers.filter(function(num) {
return num;
});
Here we delete elements that are undefined deleted, so we do not repeat the groups.
var number = numbers[i];
var nextUnique = numbers.find(function(num) {
return num != number
});
var numbersToFind = numbers.indexOf(nextUnique) - i;
Above, we look for the number of numbers in a repeating group.
if (numbersToFind > 0) {
var numbersGroup = numbers.slice(i, i + numbersToFind + 1);
var sumNumbers = numbersGroup.reduce(function(num1, num2) {
return num1 + num2;
});
newNumbers.push(sumNumbers);
delete numbers[i];
}
reduce . , newNumbers.
else {
newNumbers.push(numbers[i]);
}
}
.
alert(newNumbers);
, array.prototype.find Internet Explorer Opera.