¿Cómo encuentro la intersección de una matriz de arreglos que contienen objetos usando Javascript / underscorejs?

No puedo averiguar cómo encontrar la intersección de este conjunto de matrices:

[
 [
  {"name":"product1","light":"1"},
  {"name":"product2","light":"2"},
  {"name":"product5","light":"5"},
  {"name":"product4","light":"4"}
 ],
 [
  {"name":"product2","light":"2"},
  {"name":"product3","light":"3"},
  {"name":"product4","light":"4"}
 ],[...more arrays with objects]
]

Esto es simplementeData de muestra, el conjunto real que he cambiado mucho pero con esa estructura. Quiero que la intersección devuelta tenga este aspecto (una matriz única de los objetos intersectados):

[
 {"name":"product2","light":"2"},
 {"name":"product4","light":"4"},
]

Intenté esto junto con LoDashjs y Underscorejs:

_.intersectionObjects = _.intersect = function(array) {
var slice = Array.prototype.slice; // added this line as a utility
var rest = slice.call(arguments, 1);
return _.filter(_.uniq(array), function(item) {
  return _.every(rest, function(other) {
    //return _.indexOf(other, item) >= 0;
    return _.any(other, function(element) { return _.isEqual(element, item); });
  });
});
};

Necesito esto porque estoy tratando de crear un sistema de etiquetas usando knockoutjs. Tengo un diseño de botones de etiquetas categorizadas que escriben en una matriz observable de "filtro" al hacer clic, lo único que queda es encontrar la intersección de los productos filtrados que se encuentran en esta matriz observable.

Por favor, ayúdenme. He estado tratando de resolver esto durante dos días seguidos, pero no tengo los conocimientos de JavaScript para resolverlo. ¡Gracias por adelantado!

Respuestas a la pregunta(4)

Su respuesta a la pregunta