title: How do I find the intersection of an array of arrays that contain objects using Javascript/underscorejs?
body: <p>I can't figure out how to find the intersection of this set of arrays:</p>
  
  <pre><code>[
   [
    {"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]
  ]
  </code></pre>
  
  <p>This is just <strong>sample data</strong>, the real set I have changes a lot but with that structure. I want the returned intersection to look like this (a single array of the intersected objects):</p>
  
  <pre><code>[
   {"name":"product2","light":"2"},
   {"name":"product4","light":"4"},
  ]
  </code></pre>
  
  <p>I tried this together with LoDashjs and Underscorejs:</p>
  
  <pre><code>_.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) &gt;= 0;
      return _.any(other, function(element) { return _.isEqual(element, item); });
    });
  });
  };
  </code></pre>
  
  <p>I need this because I am trying to create a tags system using knockoutjs. I have a layout of categorized tag buttons that write to a "filter" observable array on click, the only thing left is to find the intersection of the filtered products that are contained in this observable array.</p>
  
  <p>Please help me out, I've been trying to solve this for two days straight but lack the javascript knowledge to figure it out. Thanks in advance!</p>