Implement the filter Method on a Prototype

Tell us what’s happening:

Your code so far


// the global Array
var s = [23, 65, 98, 5];

Array.prototype.myFilter = function(callback){
  var newArray = [];
  // Add your code below this line
  this.forEach(function(item){
    newArray.push(callback(item));
  });
  // Add your code above this line
  return newArray;

};

var new_s = s.myFilter(function(item){
  return item % 2 === 1;
});

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36.

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/functional-programming/implement-the-filter-method-on-a-prototype

You’re almost there.

The problem is here:

  this.forEach(function(item){
    newArray.push(callback(item));
  });

You are pushing the return value of the callback onto the new array. But that returns a boolean. Is that what you want? An array of booleans? Use that return value to decide if you want to push the value of item onto your new array.

2 Likes

hey man. can you explain what does [docallback(item)] it mean???

Hello, the argument to filter is a function called callback that is applied to each argument of the array

So callback(item) is literally just calling that function

1 Like

thanks for your reply , :grin: