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

标签 javascript arrays filter parameter-passing

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

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/

相关文章:

javascript - ListView 内可折叠面板的平滑动画

c - 从产生奇怪输出的字符串中删除字符

javascript - lambda : get objects from array by comparing with each item in another array

java - 如何仅打印一次嵌套 for 循环的结果

elasticsearch - Elasticsearch范围过滤器对数字数据类型(例如整数,长整数, double )的奇怪行为

Javascript:多个过滤器和多个 div

python - 如何通过 __in 过滤另一个模型对象列表

javascript - php 中的查询因 get 和空格而失败

javascript - Angular 指令父级和子级范围通信

javascript - 瞬间时区 : UTC offset difference