如何合并两个不同长度的数组并实现指定日期拼接规则
实现方案
你需要手动维护日期数组的遍历游标来处理特殊值的日期跳跃逻辑,直接使用_.zipWith无法实现该需求,因为该方法默认按相同索引一一配对数组元素,不支持自定义索引偏移。
代码实现
let daysArray = ['09-20', '09-21', '09-22', '09-23', '09-24', '09-25', '09-26'] let weekNameArray = ['Mi', 'Do', 'Fr', 'Sa + So', 'Mo', 'Di' ] let dayCursor = 0 const weakDateArr = weekNameArray.map(weekItem => { // 特殊值不拼接日期,跳过2天的日期位 if (weekItem === 'Sa + So') { dayCursor += 2 return weekItem } // 普通项拼接当前游标对应的日期,游标后移1位 const res = `${weekItem} ${daysArray[dayCursor]}` dayCursor += 1 return res })
输出结果完全符合你的预期:['Mi 09-20', 'Do 09-21', 'Fr 09-22', 'Sa + So', 'Mo 09-25', 'Di 09-26']
逻辑说明
- 用
dayCursor变量记录当前取到日期数组的哪个位置 - 遍历星期数组时,碰到
Sa + So就直接返回该值,同时将游标加2,跳过对应的周末两天日期 - 普通星期项取当前游标对应的日期拼接,游标加1即可
内容的提问来源于stack exchange,提问作者WhiteEyes
相关产品推荐
相关产品推荐

