Iggy Iggy - 5 months ago 20
Javascript Question

How to give javascript find() method an argument to search?

I am trying to figure out a way to do search while iterating an array. I came across

method.

Here is the example given:

var inventory = [
{name: 'apples', quantity: 2},
{name: 'bananas', quantity: 0},
{name: 'cherries', quantity: 5}
];

function findCherries(fruit) {
return fruit.name === 'cherries';
}

console.log(inventory.find(findCherries));
// { name: 'cherries', quantity: 5 }


I need find a dynamic fruit name, but I can't figure out how to do it. In short, I am trying to do something like:

function findCherries(fruit, fruitName) {
return fruit.name === fruitName;
};

inventory.find(findCherries('cherries'))
//"true is not a function"


Is there a way to give
find()
an argument and find a match base on that argument? If not, what method allows me to search an array of object dynamically?

Answer Source

With a closure (your function must return a function) like this:

function findFruitByName(name) {
    return function(fruit) {
        return fruit.name === name;
    }
}

inventory.find(findFruitByName('cherries'))
// {name: "cherries", quantity: 5}