¿Cómo encontrar elementos en array2 que no estén en array1?

Tengo dos matrices:

<code>var a1 = [ { ID: 2, N:0 }, { ID: 1, N:0 } ];
var a2 = [ { ID: 1, N:0 }, { ID: 2, N:0 }, { ID: 3, N:0 } ];
</code>

Necesito conseguir todos los elementos que están ena2 pero no ena1. Un elemento aquí es distinto de otro solo por la propiedad.ID, las otras propiedades deben ser ignoradas. Y no puedo garantizar el orden de los elementos en las matrices. Lo que significa que el resultado para este ejemplo debe ser:

<code>var result = [ { ID: 3, N:0 } ]; // result for the example above
</code>

¿Cómo puedo hacer esto de una manera eficiente? (Estaré comparando arreglos de 500 a 5,000 de longitud)

Respuestas a la pregunta(2)

Su respuesta a la pregunta