Melhor maneira de obter a interseção de chaves de dois objetos?

Eu tenho dois literais de objeto assim:

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
}

Eu quero obter a interseção das chaves que esses dois objetos literais têm assim:

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

Obviamente, posso fazer um loop e ver se existe uma chave com o mesmo nome no outro objeto, mas estou pensando se esse seria um bom caso para alguma programação funcional e mapear / filtrar / reduzir o uso? Eu mesmo não fiz tanta programação funcional, mas tenho a sensação de que poderia existir uma solução limpa e inteligente para esse problema.

questionAnswers(4)

yourAnswerToTheQuestion