按顺序分组重复项(非常规去重需求)
解决连续相同
number值的顺序分组问题 核心逻辑是按遍历顺序,将连续拥有相同number值的元素归为一组,而非把所有相同number的元素合并到同一组。以下是具体实现方案(以JavaScript为例):
实现代码
const originalArray = [ {name: 'A', number: 1, order: 1}, {name: 'B', number: 1, order: 2}, {name: 'C', number: 1, order: 3}, {name: 'D', number: 2, order: 4}, {name: 'E', number: 2, order: 5}, {name: 'F', number: 1, order: 6} ]; const groupedArray = originalArray.reduce((result, current) => { // 结果数组为空,或当前元素number与最后一组的元素number不同时,新建分组 if (result.length === 0 || current.number !== result[result.length - 1][0].number) { result.push([current]); } else { // 否则将当前元素加入最后一组 result[result.length - 1].push(current); } return result; }, []); console.log(groupedArray);
逻辑说明
- 用
reduce遍历原数组,初始化空数组作为分组结果容器 - 遍历每个元素时做判断:
- 若结果数组为空,直接创建新分组存入当前元素
- 若当前元素的
number与结果数组最后一组的元素number不一致,创建新分组 - 若一致,将当前元素追加到最后一组中
- 遍历完成后,
reduce返回的就是按顺序连续分组后的目标数组
这种方式严格遵循原数组的顺序,只对**连续相同number**的元素分组,完全匹配你需要的转换效果。
内容的提问来源于stack exchange,提问作者Jacob Byers
相关产品推荐
相关产品推荐

