Encontrar correspondências entre vários arrays JavaScript

Eu tenho vários arrays com valores de string e quero compará-los e manter apenas os resultados correspondentes que são idênticos entreTODOS deles.

Dado este código de exemplo:

var arr1 = ['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza'];
var arr2 = ['taco', 'fish', 'apple', 'pizza'];
var arr3 = ['banana', 'pizza', 'fish', 'apple'];

Eu gostaria de produzir a seguinte matriz que contém correspondências de todas as matrizes dadas:

['apple', 'fish', 'pizza']

Eu sei que posso combinar todos os arrays comvar newArr = arr1.concat(arr2, arr3); mas isso me da uma matriz com tudo, mais as duplicatas. Isso pode ser feito facilmente sem precisar da sobrecarga de bibliotecas como o underscore.js?

(Ótimo eagora Eu estou com fome também!)

EDITAR Eu suponho que devo mencionar que poderia haver uma quantidade desconhecida de matrizes, eu estava usando apenas 3 como exemplo.

questionAnswers(2)

yourAnswerToTheQuestion