2 回答

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%;}

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);
添加回答
舉報