Javascript:按字符串数组过滤对象数组

标签 javascript arrays filter

我想知道是否有更优雅的方法来做到这一点。假设我有一个这样的对象数组:

a = [
  {
    "id": "kpi02",
    "value": 10
  },
  {
    "id": "kpi02",
    "value": 30
  },
  {
    "id": "kpi02",
    "value": 11
  },
  {
    "id": "kpi02",
    "value": 33
  },
  {
    "id": "kpi03",
    "value": 1
  },
  {
    "id": "kpi03",
    "value": 0.5
  },
  {
    "id": "kpi04",
    "value": 0.5
  }
]

现在我想过滤 id 属性,以返回在另一个数组中匹配的所有对象

var kpis = ["kpi03", "kpi02"];

我想到了这个解决方案:

var b = [];
for (j in kpis) {
 for (i in a) { 
    if (a[i].id == kpis[j]) {
    b.push(a[i]);
    }
 }
}

来自 R,这似乎有点复杂,有没有办法用 filter 原型(prototype)来做到这一点?像这样但是用一组字符串来比较而不是单个字符串:

 var b = a.filter( function(item){return (item.id == "kpi03");} );

非常感谢!

最佳答案

您可以使用 indexOf在过滤器中,像这样

var res = a.filter(function (el) {
  return kpis.indexOf(el.id) >= 0; 
});

Example

关于Javascript:按字符串数组过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28138139/

相关文章:

javascript - MS Dynamics CRM 2016 - 打开记录时强制新选项卡/窗口

javascript - 通过 jQuery 在最后一项之后插入

arrays - MAX_INT 的 perl 等价物是多少?

java - MongoDB查询嵌套键值并比较内部值列表

javascript - 使用 IP 地址范围过滤 JSON (JavaScript)

javascript - 在 "Cannot convert undefined or null to object"导航栏中使用 "Collapse"时为 "reactstrap"

python - 沿一维的 1D 数组和 3D 数组的高效乘积 - NumPy

php - 选择 while 循环生成的随机数组

javascript - 具有多个术语的 Node.js 过滤器数组

javascript - 将 javascript 函数作为参数传递,并将其内容作为类内容求值