js数组拼接另一个数组,相同id的不拼接

有一个数组a和一个数组b,该怎么拼接成c数组,JS和jQuery都可以

var a=[
    {id:111,city:'qq'},
    {id:222,city:'qq'},
    {id:333,city:'zz'},
    {id:444,city:'zz'}
]
var b=[
    {id:111,city:'qq'},
    {id:909,city:'qq'},
    {id:404,city:'aa'},
    {id:222,city:'ss'}
]
var c=[
    {id:111,city:'qq'},
    {id:222,city:'qq'},
    {id:333,city:'zz'},
    {id:444,city:'zz'},
    {id:909,city:'qq'},
    {id:404,city:'aa'}
]


const a=[
    {id:111,city:'qq'},
    {id:222,city:'qq'},
    {id:333,city:'zz'},
    {id:444,city:'zz'}
]
const b=[
    {id:111,city:'qq'},
    {id:909,city:'qq'},
    {id:404,city:'aa'},
    {id:222,city:'ss'}
]
const c = [...a, ...b]
let hash = {}
const d = c.reduce((item, next) => {
  hash[next.id] ? '' : hash[next.id] = true && item.push(next)
  return item
}, [])
console.log(d)

img