Skip to content

Instantly share code, notes, and snippets.

@ariutta
Created December 6, 2015 06:15
Show Gist options
  • Save ariutta/41923d8342fe2316cbbd to your computer and use it in GitHub Desktop.
Save ariutta/41923d8342fe2316cbbd to your computer and use it in GitHub Desktop.
var input = [1, 1, 1, 2, 2, 2, 3, 3];
var outputExpected = [[1, 1, 1], [2, 2, 2], [3, 3]];
var outputActual = input.reduce(function(acc, currentItem) {
var accLength = acc.length;
var currentGroup = acc[accLength - 1];
var currentGroupLength = currentGroup.length;
if (currentGroupLength > 0) {
var previousItem = currentGroup[currentGroupLength - 1];
if (previousItem === currentItem) {
currentGroup.push(currentItem);
} else {
acc.push([currentItem]);
}
} else {
currentGroup.push(currentItem);
}
return acc;
}, [[]]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment