Como faço para encontrar a interseção de uma matriz de matrizes que contêm objetos usando Javascript / underscorejs?

Não consigo descobrir como encontrar a interseção desse conjunto de matrizes:

[
 [
  {"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]
]

Isso é apenasdados de amostra, o conjunto real eu mudei muito, mas com essa estrutura. Eu quero a intersecção retornada para ficar assim (uma matriz única dos objetos cruzados):

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

Eu tentei isso junto com LoDashjs e 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); });
  });
});
};

Eu preciso disso porque estou tentando criar um sistema de tags usando knockoutjs. Eu tenho um layout de botões de tag categorizados que escrevem em uma matriz observável de "filtro" ao clicar, a única coisa que resta é encontrar a interseção dos produtos filtrados contidos nessa matriz observável.

Por favor me ajude, eu tenho tentado resolver isso por dois dias seguidos, mas falta o conhecimento de javascript para descobrir isso. Desde já, obrigado!

questionAnswers(4)

yourAnswerToTheQuestion