如何将二维数组转换为包含startTime、endTime的嵌套对象数组
问题原因
你当前的代码仅遍历了最外层的二维数组,直接将外层遍历的索引作为内层时间数组的取值下标,既没有处理内层数组的配对逻辑,也没有生成要求的嵌套数组结构,所以无法得到预期输出。
解决代码
const transformData = () => { // 第一层遍历外层的7个时间数组 return data.map(timeArr => { // 第二层遍历每个时间数组,去掉最后一个元素后两两配对 return timeArr.slice(0, -1).map((startTime, index) => ({ startTime, endTime: timeArr[index + 1] })) }) }
逻辑说明
- 外层
map遍历原二维数组的每一项(每个子项都是长度为4的时间字符串数组),返回处理后的子数组,保持外层的嵌套结构 - 内层用
slice(0, -1)截取时间数组去掉最后一位的部分(长度为3),避免取index+1时出现越界 - 内层
map将当前遍历到的时间作为startTime,下一个位置的时间作为endTime,组装成要求的对象格式
内容的提问来源于stack exchange,提问作者reyyer
相关产品推荐
相关产品推荐

