我有一个数组模型如下:
records:[{
"empid":1,"fname": "X","lname": "Y"
},{
"empid":2,"fname": "A",{
"empid":3,"fname": "B",{
"empid":4,"fname": "C",{
"empid":5,"lname": "Y"
}
]
现在我有一个empid的数组[1,4,5].
所以现在我需要过滤包含我第二个中所有键的第一个数组.
输出:
records:[{
"empid":1,"lname": "Y"
}
]
我可以使用角度的forEach循环来完成此操作,但因为我的模型对象中有超过100条记录.我需要一个关于如何更好地处理这个问题的建议.
我正在考虑创建一个自定义过滤器,但你对它有何看法.(如果是,请提供示例代码来实现此目的).
您的帮助得到了认可.
谢谢.
解决方法
你可以用Array.prototype.filter()做到这一点,
var data = { records : [{ "empid": 1,"lname": "Y" },{ "empid": 2,{ "empid": 3,{ "empid": 4,{ "empid": 5,"lname": "Y" }] }
var empIds = [1,5]
var filteredArray = data.records.filter(function(itm){
return empIds.indexOf(itm.empid) > -1;
});
filteredArray = { records : filteredArray };
如果callBack返回true值,则传递给该特定callBack的itm将被过滤掉.你可以阅读更多关于它here.