js数组对象合并的问题

原始数据

var oldData = [{
    time: '00:01'
},{
    time: '00:02'
},{
    time: '00:03'
},{
    time: '00:04'
}]

需要把对象的一对一对进行合并
最终如下

var ret = [{time1: '00:01', time2: '00:02'},{time1: '00:03', time2: '00:04'}]

感觉不难,但是,,,就是写不出来,还请帮助
对了,数据肯定是成对成对的,不用考虑会有单个的问题

已解决 悬赏分:30 - 解决时间 2022-01-17 07:36
反对 0举报 0 收藏 0

回答3

最佳
  • @
    console.log(convertData(oldData))
    
    function convertData (list) {
      let res = []
      for(let a = 0; a < list.length; a+=2) {
        res.push({
          time1: list[a].time,
          time2: list[a + 1].time
        })
      }
      return res
    }

    6622332323.png

    支持 0 反对 0 举报
    2022-01-16 15:09
  • @

    提供个 Reduce 解法:

    oldData.reduce((acc, cur, idx) => { 
        if (idx === 0) { 
            acc = []; 
        }
        
        if (idx % 2 === 0) {
            acc.push({ time1: cur.time });
        } else {
            acc[acc.length - 1].time2 = cur.time;
        }
        
        return acc;
    }, 0);

    image.png

    支持 0 反对 0 举报
    2022-01-16 15:23
  • @
    var oldData = [{
        time: '00:01'
    },{
        time: '00:02'
    },{
        time: '00:03'
    },{
        time: '00:04'
    },{
        time: '00:01'
    },{
        time: '00:02'
    },{
        time: '00:03'
    },{
        time: '00:04'
    }]
    
    oldData.reduce((result, item, i)=>{
        if(i%2==0) return result;
        const newItem = {
            time1: oldData[i-1].time,
            time2: item.time
        };
        result.push(newItem);
        return result;
    },[])
    支持 0 反对 0 举报
    2022-01-16 15:36