1.map构造转换为数组并合并数据;
// map转数组const mapData = { '2024-03-04': { detail: [ { titId: '1', name: 'aaa', age: 16 }, { titId: '2', name: 'ccc', age: 17 }, ] }, '2024-03-05': { detail: [ { titId: '1', name: 'bbb', age: 18 }, { titId: '2', name: 'ddd', age: 19 }, ] } } let arrayData = [] this.dateDetail = [ { 'titId': '1', 'titName': 'titName1' }, { 'titId': '2', 'titName': 'titName2' } ] for( let i in mapData) { mapData[i].detail.forEach(item => { item.date = i }) arrayData.push(mapData[i]) } console.log(arrayData) arrayData.forEach((item, index) => { // 数据处理 item.detail.forEach((item1, index1) => { item1[`date`+(index+1)] = item1.date item1[`name`+(index+1)] = item1.name item1[`age`+(index+1)] = item1.age delete item1.date delete item1.name delete item1.age // 合并数据 this.dateDetail.forEach((item2, index2) => { if(item2.titId === item1.titId) { let mergedObj = {...item2, ...item1} this.dateDetail.splice(index2, 1, mergedObj) } }) }) }) console.log(this.dateDetail) // 打印后果为: // [ // { titId: '1', 'titName': 'titName1', date1: '2024-03-04', date2: '2024-03-05', name1: 'aaa', name2: 'bbb', age1: 16, age2: 18 }, // { titId: '2', 'titName': 'titName2', date1: '2024-03-04', date2: '2024-03-05', name1: 'ccc', name2: 'ddd', age1: 17, age2: 19 }, // ]
2.a数组转map
const array = [ { titId: '1', 'titName': 'titName1', date1: '2024-03-04', date2: '2024-03-05', name1: 'aaa', name2: 'bbb', age1: 16, age2: 18 }, { titId: '2', 'titName': 'titName2', date1: '2024-03-04', date2: '2024-03-05', name1: 'ccc', name2: 'ddd', age1: 17, age2: 19 }]const mapData = {}array.forEach(item => { for (let key in item) { console.log(item[key], key, key.slice(4)) if (key.indexOf('date') > -1) { const keyNew = item[key]; const index = key.slice(4) if (!mapData[keyNew]) { mapData[keyNew] = [] } mapData[keyNew].push({ titId: item.titId, name: item[`name`+index], age: item[`age`+index], }) } }})console.log(mapData)// 打印后果为://{//'2024-03-04': [// { titId: '1', name: 'aaa', age: 16 },// { titId: '2', name: 'ccc', age: 17 },//],//'2024-03-05': [// { titId: '1', name: 'bbb', age: 18 },// { titId: '2', name: 'ddd', age: 19 },//]