将Javascript数组中的顺序重复值分组

将Javascript数组中的顺序重复值分组,javascript,arrays,Javascript,Arrays,我有这个阵列: var arr = ['a','a','b','b','b','c','d','d','a','a','a']; 我希望这个输出: [ ['a','a'], ['b','b','b'], ['c'], ['d','d'], ['a','a','a'], ] 注意,我不想将所有重复值分组。只有连续的重复值 有人能帮我吗?您可以这样减少阵列: var arr = ['a','a','b','b','b','c','d','d','a','a','a']; v

我有这个阵列:

var arr = ['a','a','b','b','b','c','d','d','a','a','a'];
我希望这个输出:

[
  ['a','a'],
  ['b','b','b'],
  ['c'],
  ['d','d'],
  ['a','a','a'],
]
注意,我不想将所有重复值分组。只有连续的重复值


有人能帮我吗?

您可以这样减少阵列:

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);
请参阅。

解决方案和前一个元素的视图

var arr=['a','a','b','b','b','c','d','d','a','a'],
结果=[];
arr.REDUCT(功能(r,a){
如果(a!==r){
结果:推送([]);
}
结果[result.length-1]。推送(a);
返回a;
},未定义);

document.write(“”+JSON.stringify(结果,0,4)+“”)欢迎来到Stackoverflow!我相信您已经阅读了关于如何提出一个好问题的文章,您可能知道这不是一个编码服务。请展示您迄今为止所做的尝试,以及您是否陷入困境,我们很乐意提供帮助!这是一个for循环,如果检查并推送到数组。