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

当我进行 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 列,因为她是空的


有可能以某种方式做到这一点吗?我花了几个小时,但没有结果


开心每一天1111
浏览 156回答 2
2回答

GCT1015

我想,这就是你一直在追求的: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%;}

萧十郎

我重新排列了输出格式,因为您可以轻松获取所需的数据进行操作。这里我附上代码。如果不符合您的要求,请随时发表评论。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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript