热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Javascript:按字符串数组过滤对象数组》经验,为你挑选了1个好方法。

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

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原型做到这一点?像这样,但要与一个字符串数组进行比较而不是单个字符串:

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

非常感谢!



1> Alexander T...:

你可以在filter中使用indexOf,就像这样

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


推荐阅读
author-avatar
chasewindboy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有