2017-07-27 69 views
0

考慮以下,標準使用Array.prototype.find的:有沒有辦法用JavaScript 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; 
} 

+1

使用包裝函數,將它們綁定... – Li357

+0

IE不支持array.find,你確定你想要這個解決方案嗎? –

回答

0

你可以使用一個封閉在參數,如

var callback = function (value) { 
     return function(object) { 
      return object === value; 
     }; 
    }; 

調用回調函數參數

var getObject = myObjects.find(callback(mySearchTerm)); 
1
var term = 'some term'; 
var getObject = myObjects.find(function(item){return callback(item, term)}); 
0

你可以使用一個包裝函數的可重複使用的解決方案。

實施例:

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);

0

下面是一個例子:

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()!

相關問題