当对象键值在数组中时如何过滤数组 [英] How to filter array when object key value is in array

查看:101
本文介绍了当对象键值在数组中时如何过滤数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个如下的数组模型:

I have an array model as below:

records:[{
    "empid":1,
    "fname": "X",
    "lname": "Y"
},
{
    "empid":2,
    "fname": "A",
    "lname": "Y"
},
{
    "empid":3,
    "fname": "B",
    "lname": "Y"
},
{
    "empid":4,
    "fname": "C",
    "lname": "Y"
},
{
    "empid":5,
    "fname": "C",
    "lname": "Y"
}
]

现在我有一个空的[1,4,5]数组.

Now I have an array of empid's [1,4,5].

所以现在我需要过滤第一个包含第二个数组中所有键的数组.

So now I need to filter the first array which contains all the keys in my second.

输出:

records:[{
    "empid":1,
    "fname": "X",
    "lname": "Y"
},
{
    "empid":4,
    "fname": "C",
    "lname": "Y"
},
{
    "empid":5,
    "fname": "C",
    "lname": "Y"
}
]

我可以使用angular中的forEach循环来执行此操作,但是由于我的模型对象中有100多个记录.我需要有关如何以更好的方式处理此问题的建议.

I can do this using a forEach loop in angular but as I have more than 100 records in my model object. I need a suggestion on how to handle this in much better way.

我正在考虑创建一个自定义过滤器,但是您对此有何看法(如果可以,请提供示例代码以实现此目的).

I am thinking of creating a custom filter, but what is your take on it.(If yes please provide sample code to achieve this).

感谢您的帮助.

谢谢.

推荐答案

您可以使用Array.prototype.filter()

var data = { records : [{ "empid": 1, "fname": "X", "lname": "Y" }, { "empid": 2, "fname": "A", "lname": "Y" }, { "empid": 3, "fname": "B", "lname": "Y" }, { "empid": 4, "fname": "C", "lname": "Y" }, { "empid": 5, "fname": "C", "lname": "Y" }] }
var empIds = [1,4,5]
var filteredArray = data.records.filter(function(itm){
  return empIds.indexOf(itm.empid) > -1;
});

filteredArray = { records : filteredArray };

如果callBack返回一个true值,则传递给该特定callBackitm将被过滤掉.您可以在此处了解更多信息

If​ the ​callBack​ returns a ​true​ value, then the ​itm​ passed to that particular callBack will be filtered out. You can read more about it here.​​​​​​

这篇关于当对象键值在数组中时如何过滤数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆