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)
当然,我可以循环遍历源数组并查找下一个/上一个项目,如果它们是相同的,则将它们推送到临时数组,然后将其推送到结果数组.
但我喜欢以功能方式编写代码.那么也许有更好的方法呢?
你可以使用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)