I have this Array:
JavaScript
x
2
1
var arr = ['a','a','b','b','b','c','d','d','a','a','a'];
2
I wish this output:
JavaScript
1
8
1
[
2
['a','a'],
3
['b','b','b'],
4
['c'],
5
['d','d'],
6
['a','a','a'],
7
]
8
Obs.: Notice that I dont want group all the repeat values. Only the sequential repeated values.
Can anyone help me?
Advertisement
Answer
You can reduce your array like this:
JavaScript
1
13
13
1
var arr = ['a','a','b','b','b','c','d','d','a','a','a'];
2
3
var result = arr.reduce(function(r, i) {
4
if (typeof r.last === 'undefined' || r.last !== i) {
5
r.last = i;
6
r.arr.push([]);
7
}
8
r.arr[r.arr.length - 1].push(i);
9
return r;
10
}, {arr: []}).arr;
11
12
console.log(result);
13