Как найти пересечение массива массивов, которые содержат объекты, используя Javascript / underscorejs?

Я могу't выяснить, как найти пересечение этого набора массивов:

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

Это простоПример данныхРеальный набор у меня сильно меняется, но с этой структурой. Я хочу, чтобы возвращаемое пересечение выглядело так (один массив пересекающихся объектов):

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

Я пробовал это вместе с LoDashjs и 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); });
  });
});
};

Мне это нужно, потому что я пытаюсь создать систему тегов, используя knockoutjs. У меня есть расположение кнопок тегов категории, которые пишут в "фильтр" Наблюдаемый массив при щелчке, остается только найти пересечение отфильтрованных продуктов, которые содержатся в этом наблюдаемом массиве.

Пожалуйста, помогите мне, яЯ пытался решить эту проблему в течение двух дней подряд, но у меня не хватает знаний JavaScript, чтобы понять это. Заранее спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос