Implement the filter Method on a Prototype - Help

Implement the filter Method on a Prototype - Help
0

#1

Tell us what’s happening:
Hey, I tried with this.forEach but it doesn’t seem to do the job, that is to say, loop over every element in any array. Or is something else wrong with my code? Thanks

Your code so far


// the global Array
var s = [23, 65, 98, 5];
//How do I reference any array that could be put into the function? 
Array.prototype.myFilter = function(callback){
  var newArray = [];
  // Add your code below this line
  newArray.push(this.forEach(callback));
  // 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/68.0.3440.106 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


#2

For each does not return anything and a few other issues I see… but replace that part first


#3
newArray.push(this.forEach((item)=>callback.item));

This is what I could think of so that forEach returns something.
Doesn’t pass the challenge and I’m not sure what’s wrong… Please help


#4

this.forEach(function(item){
// add item to new array if callback test passes

})

or

for(let i=0; i<arrlen; i++){
// add current index of old array to new array if callback test passes

}

// hint : you must call “callback” as a function


#5

How do I write if callback is true then push element ofthis (any) array?
This was my try. Didn’t work…

for (let i=0; i<this.length;i++){
    if(callback)
    newArray.push(this.i);
  }
callback(this.i) //didn't work either
for (let i=0; i<this.length;i++){
    if(this.i.callback)
    newArray.push(this.i);
  } //neither did this 

:frowning:


#6

Good job! You basically had it.

IMPORTANT : !!! PLZZZ READ :slight_smile:

REASON : https://stackoverflow.com/questions/17189642/difference-between-using-bracket-and-dot-notation

Array.prototype.myFilter = function(callback){
var newArray = [];
// Add your code below this line
for(let i=0; i<this.length; i++){
const currentItem = this[i]
if(callback(currentItem)){
newArray.push(currentItem)
}
}
// Add your code above this line
return newArray;

};


#7

Thank you!!! Makes sense to me now, will read the article.