¿La mejor manera de obtener la intersección de las teclas de dos objetos?

Tengo dos literales de objeto como este:

var firstObject =
{
    x: 0,
    y: 1,
    z: 2,

    a: 10,
    b: 20,
    e: 30
}

var secondObject =
{
    x: 0,
    y: 1,
    z: 2,

    a: 10,
    c: 20,
    d: 30
}

Quiero obtener la intersección de las claves que tienen estos dos literales de objeto así:

var intersectionKeys  = ['x', 'y', 'z', 'a']

Obviamente, puedo hacer un bucle y ver si existe una clave con el mismo nombre en el otro objeto, pero me pregunto si este sería un buen caso para alguna programación funcional y un mapa / filtro / uso reducido. Yo mismo no he hecho tanta programación funcional, pero tengo la sensación de que podría existir una solución limpia e inteligente para este problema.

Respuestas a la pregunta(4)

Su respuesta a la pregunta