Wie finde ich den Schnittpunkt eines Arrays von Arrays, die Objekte enthalten, mit Javascript / underscorejs?

Ich kann nicht herausfinden, wie ich die Schnittmenge dieser Reihe von Arrays finde:

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

Das ist gerechtBeispieldatenDas reale Set habe ich sehr verändert, aber mit dieser Struktur. Ich möchte, dass die zurückgegebene Schnittmenge wie folgt aussieht (ein einzelnes Array der geschnittenen Objekte):

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

Ich habe das zusammen mit LoDashjs und Underscorejs versucht:

_.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); });
  });
});
};

Ich brauche das, weil ich versuche, ein Tag-System mit knockoutjs zu erstellen. Ich habe ein Layout kategorisierter Tag-Schaltflächen, die beim Klicken in ein "Filter" -Array schreiben. Das einzige, was übrig bleibt, ist, die Schnittmenge der gefilterten Produkte zu finden, die in diesem beobachtbaren Array enthalten sind.

Bitte helfen Sie mir, ich habe zwei Tage lang versucht, dieses Problem zu lösen, aber es fehlen mir die Javascript-Kenntnisse, um es herauszufinden. Danke im Voraus!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage