Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
225 views
in Technique[技术] by (71.8m points)

关于数组拆分的问题?

像这样的数组,如何才能拆分为结果图所示的那样,将时间不连贯的拆开为单独的一项
image.png
结果图
image.png


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
const result = {};
const arr = [
    { time: '10:00' },
    { time: '11:00' },
    { time: '12:00' },
    { time: '13:00' },
    { time: '17:00' },
    { time: '18:00' },
    { time: '19:00' },
    { time: '20:00' },
    { time: '21:00' },
    { time: '23:00' },
    { time: '22:00' },
];
const splitNum = 1; //间隔超过1个小时就认为不连续
let partNum = 1;

arr.sort((a, b) => parseInt(a.time) - parseInt(b.time)).map((value, index) => {
    if (index === 0) {
        result[`part_${partNum}`] = [value];
        return
    }
    if (parseInt(value.time) - parseInt(arr[index - 1].time) > splitNum) {//不连续
        partNum += 1;
        result[`part_${partNum}`] = [];
    }

    result[`part_${partNum}`].push(value);
})

console.log(result);

// {
//     part_1: [
//       { time: '10:00' },
//       { time: '11:00' },
//       { time: '12:00' },
//       { time: '13:00' }
//     ],
//     part_2: [
//       { time: '17:00' },
//       { time: '18:00' },
//       { time: '19:00' },
//       { time: '20:00' },
//       { time: '21:00' },
//       { time: '22:00' },
//       { time: '23:00' }
//     ]
//   }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share

2.1m questions

2.1m answers

63 comments

56.6k users

...