听听那晚风
2021-06-17 17:03
采纳率: 83.3%
浏览 41

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

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" },

]

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 风雪一更 2021-06-17 17:31
    已采纳

    有帮助请给个采纳~

    点赞 1 评论
  • Roc-xb 2021-06-17 18:03
    <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>

    程序输出结果:

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

    点赞 1 评论

相关推荐 更多相似问题