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'}]

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

阅读 2k
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

提供个 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

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;
},[])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题