[英]is there a way to send in parameters with JavaScript Array.prototype.find?
考慮以下Array.prototype.find的標准用法:
var getObject = myObjects.find(callback);
有:
var callback = function(object) {
return object === 'myValue'
}
有沒有辦法注入另一個參數? 因此,我們不得不說:
var getObject = myObjects.find(callback, mySearchTerm);
有:
var callback = function(element, mySearchTerm) {
return element === mySearchTerm;
}
?
var term = 'some term';
var getObject = myObjects.find(function(item){return callback(item, term)});
您可以對參數使用閉包,例如
var callback = function (value) {
return function(object) {
return object === value;
};
};
使用參數調用回調
var getObject = myObjects.find(callback(mySearchTerm));
您可以將包裝函數用於可重用的解決方案。
例:
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);
要么
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);
這是一個例子:
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"));
但是同樣,IE不支持array.find()!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.