Jak znaleźć przecięcie tablicy tablic zawierających obiekty za pomocą Javascript / underscorejs?

Nie wiem, jak znaleźć przecięcie tego zestawu tablic:

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

To tylkoprzykładowe dane, prawdziwy zestaw mam dużo zmian, ale z tą strukturą. Chcę, aby zwracane skrzyżowanie wyglądało tak (pojedyncza tablica przeciętych obiektów):

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

Próbowałem tego razem z LoDashjs i 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); });
  });
});
};

Potrzebuję tego, ponieważ próbuję stworzyć system znaczników za pomocą knockoutów. Mam układ podzielonych na kategorie przycisków znaczników, które po kliknięciu zapisują tablicę obserwowalną „filtr”, a jedyne, co zostało, to znalezienie przecięcia filtrowanych produktów zawartych w tej obserwowalnej tablicy.

Pomóż mi, próbowałem rozwiązać ten problem przez dwa dni, ale brakuje mi wiedzy o javascript, żeby to zrozumieć. Z góry dziękuję!

questionAnswers(4)

yourAnswerToTheQuestion