Wherefore art thou help needed!

Tell us what’s happening:
Can anyone tell me why the the following code doesn’t pass the test…?

Your code so far


function whatIsInAName(collection, source) {
  // "What's in a name? that which we call a rose
  // By any other name would smell as sweet.”
  // -- by William Shakespeare, Romeo and Juliet
  var srcKeys = Object.keys(source);

  // filter the collection
  return collection.filter(obj=> {
    srcKeys.forEach(key=>{
      if(!obj.hasOwnProperty(key) || obj[key] !== source[key]) {
        return false;
      }
    })
    return true;
  });
}

// test here
whatIsInAName([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });

Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36.

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/wherefore-art-thou

The reason is one of the most annoying things about the forEach method. You can exit from a forEach method only if you throw an exception (no return, no breaks etc.). Use a general for or a for of and it should work. :slight_smile: