簡體   English   中英

有沒有一種方法可以使用JavaScript Array.prototype.find發送參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM