Differenz und Schnittmenge zweier Arrays mit Objekten

ch habe zwei Arralist1 undlist2 die Objekte mit einigen Eigenschaften haben;userId ist die ID oder eindeutige Eigenschaft:

list1 = [
    { userId: 1234, userName: 'XYZ'  }, 
    { userId: 1235, userName: 'ABC'  }, 
    { userId: 1236, userName: 'IJKL' },
    { userId: 1237, userName: 'WXYZ' }, 
    { userId: 1238, userName: 'LMNO' }
]

list2 = [
    { userId: 1235, userName: 'ABC'  },  
    { userId: 1236, userName: 'IJKL' },
    { userId: 1252, us,erName: 'AAAA' }
]

Ich suche nach einer einfachen Möglichkeit, die folgenden drei Operationen auszuführen:

list1 operation list2 sollte die Schnittmenge von Elementen zurückgeben:

[
    { userId: 1235, userName: 'ABC'  },
    { userId: 1236, userName: 'IJKL' }
]

list1 operation list2 sollte die Liste aller Elemente von @ zurückgeblist1 was nicht in @ vorkomlist2:

[
    { userId: 1234, userName: 'XYZ'  },
    { userId: 1237, userName: 'WXYZ' }, 
    { userId: 1238, userName: 'LMNO' }
]

list2 operation list1 sollte die Liste der Elemente von @ zurückgeblist2 was nicht in @ vorkomlist1:

[
    { userId: 1252, userName: 'AAAA' }
]

Antworten auf die Frage(12)

Ihre Antwort auf die Frage