猿问

求助:a、b数据如何实现这样的格式化

先上代码,formatter希望返回组装后的数据

var olda = [

  {

    flight: 'hu7305',

    from: 'lhw',

    to: 'ybp'

  },

  {

    flight: 'hu7306',//new中没有,state=del

    from: 'lhw',

    to: 'ybp'

  },

];

var newa = [

  {

    flight: 'hu7305',//old中有,忽略

    from: 'lhw',

    to: 'ybp'

  },{

    flight: 'hu7777',//old中没有,state=add

    from: 'www',

    to: 'qqq'

  }

];


function formatter(a, b){

    ...

    return ([//希望返回如下的数据

      {

        flight: 'hu7306',//del

        from: 'lhw',

        to: 'ybp',

        state: 'del'

      },{

        flight: 'hu7777',//add

        from: 'www',

        to: 'qqq',

        state: 'add'

      }            

    ])

}

formatter(olda, newa);

规则:单个对象中的flight、from、to三者的值任一不同则视为不同的数据,需要返回;在olda中有而newa中没有时state为del,在olda没有而newa中有则state为add。

不负相思意
浏览 388回答 1
1回答

慕田峪7331174

function formatter (a, b) {  const m = new Map(a.map(x => [x.flight, x]))  b.forEach(x => m.set(x.flight, m.has(x.flight) ? null : Object.assign({state: 'add'}, x)))  return Array.from(m.values())    .filter(x => x)    .map(x => x.state ? x : Object.assign({state: 'del'}, x))}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答