求问关于j对象数组合并的问题

没有名字就是名字
  • 147

有两个数组

const arr = [{
  title: '标题',
  config: [{
    time: '10:00',
    name: '1-1'
  },{
    time: '10: 01',
    name: '1-2'
  },{
    time: '10:02',
    name: '1-3'
  }]
},{
  title: '标题1',
  config: [{
     time: '10: 00',
     name: '2-1'
   },{
     time: '10: 03',
     name: '2-2'
   },{
     time: '10: 04',
     name: '2-3'
   }]
}]

合并后的结果

const result = [{
  time: 10:00,
  name1: '1-1'
  name2: '2-1'
},{
  time: 10: 01,
  name1: '1-2',
  name2: ''
},{
  time: 10: 02,
  name1: '1-3,
  name2: ''
},{
  time: 10: 03,
  name1: ',
  name2: '2-2'
},{
  time: 10: 04,
  name1: '',
  name2: '2-3'
}]

如果两个数组里的time相同的话,就合成一条数据
不同的话哪个里就是哪个里的
然后name1,name2是根据arr的长度来的

半天没弄出来,求教

大家都疑惑有这样的数据结构,真的有,快哭了
Snipaste_2020-03-19_16-13-46.png

回复
阅读 924
1 个回答
蛋先生DX
  • 307
✓ 已被采纳
const arr = [{
  title: '标题',
  config: [{
    time: '10:00',
    name: '1-1'
  },{
    time: '10:01',
    name: '1-2'
  },{
    time: '10:02',
    name: '1-3'
  }]
},{
  title: '标题1',
  config: [{
     time: '10:00',
     name: '2-1'
   },{
     time: '10:03',
     name: '2-2'
   },{
     time: '10:04',
     name: '2-3'
   }]
}]

数据time的内容有问题,请用我上面的数据,然后使用 lodash 的方法来处理

    _.chain(arr)
      .map(item => item.config)
      .flatten()
      .groupBy(item => item.time)
      .map((items, time) => {
        let result = { time };
        items.forEach((item, idx) => {
          result["name" + idx] = item.name;
        });
        return result;
      })
      .value();

image.png