Javascript 将函数作为参数传递给array.prototype.filter

Javascript 将函数作为参数传递给array.prototype.filter,javascript,arrays,filter,parameter-passing,Javascript,Arrays,Filter,Parameter Passing,我正在使用filter函数搜索对象数组中的某些对象属性和值,如: myArray.filter((e) => (e.name == "test")) 为了更灵活,我编写了一个小函数,其中我将属性/值作为参数传递: function findSomething(_property, _value) { myArray.filter((e) => (e[_property] == _value)) } 上述示例适用于“正常”特性。但当我尝试传递对象的函数“getType()”时,

我正在使用filter函数搜索对象数组中的某些对象属性和值,如:

myArray.filter((e) => (e.name == "test"))
为了更灵活,我编写了一个小函数,其中我将属性/值作为参数传递:

function findSomething(_property, _value) {
  myArray.filter((e) => (e[_property] == _value))
}
上述示例适用于“正常”特性。但当我尝试传递对象的函数“getType()”时,它失败了:

myArray.filter((e) => (e[getType] == "something")) //... getType is not defined

工作非常好

你对如何解决这个问题有什么想法吗

提前谢谢
Christian

如果您有一个属性是函数,那么可以先检查属性值,然后取函数调用的返回值或属性值来检查值

function filter(array, key, value) {
    return array.filter(o => (typeof o[key] === 'function' ? o[key]() : o[key]) === value);
}

getType()
是一个函数。从对象读取值时,将得到一个函数。您必须调用函数才能获得结果:
e['getType']()
您希望
\u property
是简单属性的名称还是对象上定义的函数的名称?请添加一个可理解的示例(带数据)。@Paul:我想同时传递简单属性和函数属性…:)哇,多好的表情啊。它很好用,不过我需要一些时间来消化。Vielen Dank:)
function filter(array, key, value) {
    return array.filter(o => (typeof o[key] === 'function' ? o[key]() : o[key]) === value);
}