对象数组中,根据某个值相同,合并数组

var arr=[

            {date:'3月21日',startTime:'08:30',endTime:'21:30'},

            {date:'3月21日',startTime:'21:30',endTime:'08:30'},

            {date:'3月22日',startTime:'08:30',endTime:'21:30'},

            {date:'3月22日',startTime:'21:30',endTime:'08:30'},

            {date:'3月23日',startTime:'08:30',endTime:'21:30'},

            {date:'3月23日',startTime:'21:30',endTime:'08:30'},

        ]

 

希望生成

[

        { date: "3月21日", dayTime: "08:30-21:30", night: "21:30-08:30" },

       { date: "3月22日", dayTime: "08:30-21:30", night: "21:30-08:30" },

       { date: "3月23日", dayTime: "08:30-21:30", night: "21:30-08:30" },

]

有帮助请给个采纳~

<script>
        var arr = [{
                date: '3月21日',
                startTime: '08:30',
                endTime: '21:30'
            }, {
                date: '3月21日',
                startTime: '21:30',
                endTime: '08:30'
            }, {
                date: '3月22日',
                startTime: '08:30',
                endTime: '21:30'
            }, {
                date: '3月22日',
                startTime: '21:30',
                endTime: '08:30'
            }, {
                date: '3月23日',
                startTime: '21:30',
                endTime: '08:30'
            }, {
                date: '3月23日',
                startTime: '08:30',
                endTime: '21:30'
            }

        ]

        let map = {}

        for (let i = 0; i < arr.length; i++) {
            let ai = arr[i]
            if (!map[ai.date]) {
                map[ai.date] = [ai]
            } else {
                map[ai.date].push(ai)
            }
        }
        let res = []

        Object.keys(map).forEach(key => {
            var a1 = parseInt(map[key][0].startTime.substr(0, 2))
            var b1 = parseInt(map[key][1].startTime.substr(0, 2))
            if (a1 > b1) {
                res.push({
                    date: key,
                    dayTime: map[key][1].startTime + "-" + map[key][1].endTime,
                    night: map[key][0].startTime + "-" + map[key][0].endTime
                })
            } else {
                res.push({
                    date: key,
                    dayTime: map[key][0].startTime + "-" + map[key][0].endTime,
                    night: map[key][1].startTime + "-" + map[key][1].endTime
                })
            }

        })
        console.log(res)
    </script>

程序输出结果:

编码不易,望采纳,谢谢!