按值对相邻数组项进行分组的最佳方法

Gir*_*afa 3 javascript arrays functional-programming

假设我们有一组值:

[5, 5, 3, 5, 3, 3]
Run Code Online (Sandbox Code Playgroud)

按价值和邻接对它们进行分组的最佳方法是什么?结果应如下:

[ [5,5], [3], [5], [3,3] ]
Run Code Online (Sandbox Code Playgroud)

当然,我可以循环遍历源数组并查找下一个/上一个项目,如果它们是相同的,则将它们推送到临时数组,然后将其推送到结果数组.

但我喜欢以功能方式编写代码.那么也许有更好的方法呢?

dfs*_*fsq 7

你可以使用Array.prototype.reduce方法:

var result = [5, 5, 3, 5, 3, 3].reduce(function(prev, curr) {
    if (prev.length && curr === prev[prev.length - 1][0]) {
        prev[prev.length - 1].push(curr);
    }
    else {
        prev.push([curr]);
    }
    return prev;
}, []);

alert( JSON.stringify(result) );
Run Code Online (Sandbox Code Playgroud)