如何实现数组元素链式两两分组?尝试用Array.reduce()解决
解决方案
你的需求是将数组转换为相邻元素重叠配对的链式结构,之前的reduce代码逻辑是按索引奇偶拆分非重叠组,所以不符合预期。以下是两种简洁的reduce实现方案:
方案一:直观写法
const arr = ['A', 'B', 'C', 'D', 'E', 'F']; const chainedGroups = arr.reduce((acc, curr, index) => { // 从第二个元素开始,和前一个元素组成配对 if (index > 0) { acc.push([arr[index - 1], curr]); } return acc; }, []); console.log(chainedGroups); // 输出:[['A','B'], ['B','C'], ['C','D'], ['D','E'], ['E','F']]
方案二:简洁箭头函数写法
const arr = ['A', 'B', 'C', 'D', 'E', 'F']; const chainedGroups = arr.reduce((acc, curr, i) => i ? [...acc, [arr[i-1], curr]] : acc, []);
逻辑说明
核心思路是遍历数组时,仅针对第二个及以后的元素,将它与前一个索引的元素组成子数组,添加到累加器中。这样就能形成首尾相连的链式分组结构。
内容的提问来源于stack exchange,提问作者Shizuka Yashiro
相关产品推荐
相关产品推荐

