将数组中的相同值分组

Emi*_*nov 5 javascript arrays function filter

我有一个数组,里面有一些值,我希望返回另一个数组,该数组的值分组到他们自己的数组中。

所以我想要达到的结果是这样的:

var arr = [1,1,2,2,2,3,3,4,4,4,4,5,6]
var groupedArr =[[1,1],[2,2,2],[3,3],[4,4,4,4],[5],[6]]
Run Code Online (Sandbox Code Playgroud)

Nin*_*olz 4

该提案适用于Array#reduce排序数组。

var arr = [1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 4, 5, 6],
    groupedArr = arr.reduce(function (r, a, i) {
        if (!i || a !== r[r.length - 1][0]) {
            return r.concat([[a]]);
        }
        r[r.length - 1].push(a);
        return r;
    }, []);

document.write('<pre>' + JSON.stringify(groupedArr, 0, 4) + '</pre>');
Run Code Online (Sandbox Code Playgroud)