我正在使用过滤函数在对象数组中搜索某些对象属性和值,例如:
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
同时
myArray.filter((e) => (e.getType() == "something"))
工作得很好......
您对如何解决这个问题有什么想法吗?
提前致谢 基督徒
最佳答案
如果您有一个属性是一个函数,您可以先检查属性值,然后获取函数调用的返回值或属性值来检查该值。
function filter(array, key, value) {
return array.filter(o => (typeof o[key] === 'function' ? o[key]() : o[key]) === value);
}
关于javascript - 将函数作为参数传递给 array.prototype.filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51247471/