Consider the following, standard use of Array.prototype.find:
var getObject = myObjects.find(callback);
with:
var callback = function(object) {
return object === 'myValue'
}
Is there a way to inject another parameter? So we'd have, say:
var getObject = myObjects.find(callback, mySearchTerm);
with:
var callback = function(element, mySearchTerm) {
return element === mySearchTerm;
}
?
var term = 'some term';
var getObject = myObjects.find(function(item){return callback(item, term)});
You could use a closure over the parameter, like
var callback = function (value) {
return function(object) {
return object === value;
};
};
Call the callback with parameter
var getObject = myObjects.find(callback(mySearchTerm));
You could use a wrapper function for a reusable solution.
Example:
var myObjects = [1, 2, 2, 3, 4]; var search = function(data, mySearchTerm) { var callback = function(element) { return element === mySearchTerm; }; return data.find(callback) }; var getObject = search(myObjects, 2); console.log(getObject);
Or
var myObjects = [1, 2, 2, 3, 4]; var mySearchTerm = 2; var callback = function(object) { return object === mySearchTerm; }; var getObject = myObjects.find(function(element) { return callback(element, mySearchTerm); }); console.log(getObject);
Here is an example:
var inventory = [
{name: 'apples', quantity: 2},
{name: 'bananas', quantity: 0},
{name: 'cherries', quantity: 5}
];
function myFind(what){
function findCherries(fruit) {
return fruit.name === what;
}
return inventory.find(findCherries)
}
console.log(myFind("cherries"));
But again, IE doesn't support array.find() !
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.