Об'єднання масивів

Всім привіт мені треба обеднати два масива с унікальними значенями в мене вийшло але то гавно код я думаю можна зробити простіше

const arrOne = [
        {city: 'lviv', price: 1},
        {city: 'drogobuch', price: 2},
    ]
    const arrTwo = [
        {city: 'lviv', price: 0},
        {city: 'styu', price: 0},
        {city: 'odessa', price: 0},
    ]

    const res = arrOne.reduce((acc, cur, idx, def) => {
        const findCity = arrTwo.filter(el =>  !def.find(it => it.city  === el.city) )
        console.log('findCity', findCity)
        if(findCity && findCity.length > 0){
            return [...acc, ...findCity, cur]
        }

        return [...acc, cur]
    }, [])

   console.log('res', [...new Set(res)]  )

Як оброблювати обʼєкти з однаковими городами та різними price?

Таку задачу можно розбити на 2 етапи:

  1. Обʼеднаті масиви
  2. Відфільтрувати зайве
const arrOne = [
    {city: 'lviv', price: 1},
    {city: 'drogobuch', price: 2},
]
const arrTwo = [
    {city: 'lviv', price: 0},
    {city: 'styu', price: 0},
    {city: 'odessa', price: 0},
]

const everything = [...arrOne, ...arrTwo]
const unique = everything.filter((outer, iteratedIndex) => {
    const foundIndex = everything.findIndex((inner) => {
        return inner.city === outer.city
    })
    // Індекси будуть однакові на першій ітераціі по everything, ра різні для схожих обʼектів на наступних
    // Отже в результат ввійде перший "схожий" обʼект
    return foundIndex === iteratedIndex
})

console.log(unique)

спс
я ще вотак написав

    let stopArray = false
    const res2 = arrOne.reduce((acc, cur, idx, def) => {
        const findCity = arrTwo.filter(el =>  !def.find(it => it.city  === el.city))
        if(findCity && findCity.length > 0 && !stopArray){
            stopArray = true
            return [...acc, ...findCity, cur]
        }
        return [...acc, cur]
    }, [])
    console.log('2', res2)

Є в мене відчуття що з іншими початковими масивами це алгоритм не спрацює. Але я не зміг знайти прикладу щоб це підвердити, моє відчуття може не підтвердитися. Дуже схоже що рішення працює але воно занадто заплутано: не розміщуеться в голові (а я програмую майже кожний день вже багато років).

Те що ти убрав Set це вірно: він був зайвий ні на що не впливав.