title: Filter array of objects by multiple strings
body: <p>Trying to wrap my brain around how I should tackle filtering an array of objects and only returning results that satisfy <strong>all of the tags</strong>.</p>
  
  <p>The tags could be any of the fields - <code>fname</code>/<code>lname</code>/<code>email</code>/<code>position</code>/<code>etc</code></p>
  
  <pre><code>let search_tags = ['CEO', 'Steven'];
  
  let contacts = [
    { fname: 'Steve', lname: 'Johnson', email: 'user@domain.com', position: 'CEO' },
    { fname: 'James', lname: 'Laurence', email: 'boss@domain.com', position: 'CFO' }
  ]
  
  let results = contacts.filter((contact) =&gt; {
    if (search_tags.includes(contact.fname) || 
        search_tags.includes(contact.lname) ... ) {
      return contact;
    }
  }
  </code></pre>
  
  <p>I shortened a bit of the code for brevity and obviously this solution will return contacts that match <strong>any</strong> <code>search_tag</code> but... I need to only return results that satisfy <strong>every</strong> <code>search_tag</code>.</p>
  
  <p>It's been a long day and I have no one to talk this through so I'm hoping someone may be able to point me in the right direction or give me that <em>ah-ha!</em> moment I'm hoping for :)</p>
  
  <p>Thanks in advance!</p>