我有这个数组:
var arr = ['a','a','b','b','b','c','d','d','a','a','a'];
我希望这个输出:
[
['a','a'],
['b','b','b'],
['c'],
['d','d'],
['a','a','a'],
]
Obs。:请注意,我不想要所有重复值组。只有连续的重复值。
任何人都可以帮助我吗?
答案 0 :(得分:2)
使用Array.prototype.reduce()
的解决方案和前一个元素的视图。
var arr = ['a', 'a', 'b', 'b', 'b', 'c', 'd', 'd', 'a', 'a', 'a'],
result = [];
arr.reduce(function (r, a) {
if (a !== r) {
result.push([]);
}
result[result.length - 1].push(a);
return a;
}, undefined);
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
答案 1 :(得分:1)
您可以像这样减少数组:
var arr = ['a','a','b','b','b','c','d','d','a','a','a'];
var result = arr.reduce(function(r, i) {
if (typeof r.last === 'undefined' || r.last !== i) {
r.last = i;
r.arr.push([]);
}
r.arr[r.arr.length - 1].push(i);
return r;
}, {arr: []}).arr;
console.log(result);