为了账号安全,请及时绑定邮箱和手机立即绑定

如何将多个对象合二为一?

如何将多个对象合二为一?

开心每一天1111 2022-05-26 14:02:27
当我进行 http 请求时,我得到了对象数组,例如: [   { row: '3', col: '1', val: '10:00' },  { row: '3', col: '2', val: 'Some text' },  { row: '3', col: '3', val: 'Yura' },  { row: '3', col: '4', val: '676031383' },  { row: '3', col: '6', val: '9:00 ' },  { row: '3', col: '7', val: 'Some text' },  { row: '3', col: '8', val: 'Alex' },  { row: '3', col: '9', val: '965773775' },  { row: '4', col: '1', val: '7:00' },  { row: '4', col: '2', val: 'Some text' },  { row: '4', col: '3', val: 'Anya' },  { row: '4', col: '4', val: '951018689' },  { row: '4', col: '6', val: '08:00' },  { row: '4', col: '7', val: 'Some text' },  { row: '4', col: '8', val: 'Dima' },  { row: '4', col: '9', val: '961452584' },]问题是我需要将这些对象组合成一个并再添加一个 key- type,例如:{ time: 10:00, info: 'Some text', name: 'Yura', phone: '676031383', type: 'Driver' }{ time: 9:00, info: 'Some text', name: 'Alex', phone: '965773775', type: 'Passenger' }{ time: 7:00, info: 'Some text', name: 'Anya', phone: '951018689', type: 'Driver' }{ time: 8:00, info: 'Some text', name: 'Dima', phone: '951018689', type: 'Passenger' }From 1to 4type 应该是“Driver”,from 6to9应该是“Passenger”。响应没有 5 列,因为她是空的有可能以某种方式做到这一点吗?我花了几个小时,但没有结果
查看完整描述

2 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

我想,这就是你一直在追求的:


const src = [{row:'3',col:'1',val:'10:00'},{row:'3',col:'2',val:'Some text'},{row:'3',col:'3',val:'Yura'},{row:'3',col:'4',val:'676031383'},{row:'3',col:'6',val:'9:00 '},{row:'3',col:'7',val:'Some text'},{row:'3',col:'8',val:'Alex'},{row:'3',col:'9',val:'965773775'},{row:'4',col:'1',val:'7:00'},{row:'4',col:'2',val:'Some text'},{row:'4',col:'3',val:'Anya'},{row:'4',col:'4',val:'951018689'},{row:'4',col:'6',val:'08:00'},{row:'4',col:'7',val:'Some text'},{row:'4',col:'8',val:'Dima'},{row:'4',col:'9',val:'961452584'},],


      res = [...src]

        .reduceRight((r,i,_,s) => (r.push(s.splice(0,4)),r),[])

        .map((e,i) => ({time: e[0].val, info: e[1].val, name:e[2].val, phone: e[3].val, type: i&1 ? 'Passenger' : 'Driver'}))


console.log(res)

.as-console-wrapper{min-height:100%;}


查看完整回答
反对 回复 2022-05-26
?
萧十郎

TA贡献1815条经验 获得超13个赞

我重新排列了输出格式,因为您可以轻松获取所需的数据进行操作。这里我附上代码。如果不符合您的要求,请随时发表评论。


const data = [ 

  { row: '3', col: '1', val: '10:00' },

  { row: '3', col: '2', val: 'Some text' },

  { row: '3', col: '3', val: 'Yura' },

  { row: '3', col: '4', val: '676031383' },

  

  { row: '3', col: '6', val: '9:00 ' },

  { row: '3', col: '7', val: 'Some text' },

  { row: '3', col: '8', val: 'Alex' },

  { row: '3', col: '9', val: '965773775' },


  { row: '4', col: '1', val: '10:00' },

  { row: '4', col: '2', val: 'Some text' },

  { row: '4', col: '3', val: 'Yura' },

  { row: '4', col: '4', val: '676031383' },

  

  { row: '4', col: '6', val: '9:00 ' },

  { row: '4', col: '7', val: 'Some text' },

  { row: '4', col: '8', val: 'Alex' },

  { row: '4', col: '9', val: '965773775' },

];


const result = {}

data.forEach(v => result[v.row] = {driver: {}, passenger: {}});


data.forEach(value => {

  if (value.col === '1')      result[value.row].driver.time = value.val;

  else if (value.col === '2') result[value.row].driver.info = value.val;

  else if (value.col === '3') result[value.row].driver.name = value.val;

  else if (value.col === '4') result[value.row].driver.phone = value.val;

  else if (value.col === '6') result[value.row].passenger.time = value.val;

  else if (value.col === '7') result[value.row].passenger.info = value.val;

  else if (value.col === '8') result[value.row].passenger.name = value.val;

  else if (value.col === '9') result[value.row].passenger.phone = value.val;

});


console.log(result);


查看完整回答
反对 回复 2022-05-26
  • 2 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号