1

I'm in a little trouble here. Can't really resolve this problem, I've been using this solution:

 Array.prototype.all = function(callback){
    for(let i = 0; i < this.length; i++){
      if(this[i] < 10) return true;
  }
      if(this[i] < 2) return false;
    }
}

But it does not work. I know I'm making a rookie mistake (I'm new to learning javascript), and would love a little help on this.

The problem in question is this one:

function all(fn) {
      // Write a function called all in the Array prototype,
      // that receives a function (callback). Assume fn always returns true or false.
      // The function all must return true if fn returns true when we invoke it passing all the elements of the array one by one
      // the function all must return false, if any element of the array causes fn to return false;
      // E.g:
      // [1,2,3].all(function(elem) {
      //    return elem < 10;
      //  });
      // returns true
      // [1,2,3].all(function(elem) {
      //    return elem < 2;
      //  });
      // returns false.
    }
2
  • Please tell us what is not working and what you are trying to achieve :) By the way have a look to the .every function > developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… Commented Aug 14, 2022 at 7:09
  • format you code and you'll see the issue immediately Commented Aug 14, 2022 at 7:18

1 Answer 1

2

You only have to return true if the returned value from callback is false else return true

Array.prototype.all = function (callback) {
    for (let i = 0; i < this.length; ++i) {
        const result = callback(this[i]);
        if (!result) return false;
    }

    return true;
};

const arr1 = [1, 2, 3, 4, 20, 300, 0];
const arr2 = [1, 0];

console.log(arr1.all((elem) => elem < 2));
console.log(arr2.all((elem) => elem < 2));

ADDITIONAL INFO

Array.prototype already has every method that will the exact same thing

const arr1 = [1, 2, 3, 4, 20, 300, 0];
const arr2 = [1, 0];
console.log(arr1.every((elem) => elem < 2));
console.log(arr2.every((elem) => elem < 2));

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.