Encontrar coincidencias entre múltiples matrices de JavaScript

Tengo varios arreglos con valores de cadena y quiero compararlos y solo mantener los resultados coincidentes que son idénticos entreTODOS de ellos.

Dado este código de ejemplo:

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

Me gustaría producir la siguiente matriz que contiene coincidencias de todas las matrices dadas:

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

Sé que puedo combinar todas las matrices convar newArr = arr1.concat(arr2, arr3); pero eso solo me da una matriz con todo, mas los duplicados. ¿Se puede hacer esto fácilmente sin necesitar la sobrecarga de bibliotecas como underscore.js?

(Genial yahora ¡Yo también tengo hambre!)

EDITAR Supongo que debería mencionar que podría haber una cantidad desconocida de arreglos, solo estaba usando 3 como ejemplo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta