繁体   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