Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按ID数组筛选对象数组_Javascript_Arrays_Angular_Object - Fatal编程技术网

Javascript 按ID数组筛选对象数组

Javascript 按ID数组筛选对象数组,javascript,arrays,angular,object,Javascript,Arrays,Angular,Object,我有一个服务ID的数组activeid,还有另一个数组servicesList,其中包含服务对象 例如:- activeIds = [202, 204] serviceList = [{ "id":201, "title":"a" }, { "id":202, "title":"a"

我有一个服务ID的数组
activeid
,还有另一个数组
servicesList
,其中包含服务对象

例如:-

activeIds = [202, 204]
serviceList = [{  
                "id":201,
                "title":"a"
               },
               {  
                "id":202,
                "title":"a"
               },
               {  
                "id":203,
                "title":"c"
               },
               {  
                "id":204,
                "title":"d"
               },
               {  
                "id":205,
                "title":"e"
               }];
我想要ID不是第一个数组的一部分的所有服务(obj),即
activeID
。从上面的示例代码中,我想要ids 201203205的服务obj

最终产出-

expectedArray = [{  
                "id":201,
                "title":"a"
               },
               {  
                "id":203,
                "title":"c"
               },
               {  
                "id":205,
                "title":"e"
               }];
下面是我的代码尝试。但这根本不正确。请帮忙-

    const activeIds = e; // [202, 204]
    const obj = [];
    this.serviceList.map((s: IService) => {
        activeIds.map((id: number) => {
            if (id !== s.id) {
                obj.push(s);
            }
        });
    });

只需将一起使用,即可检查下一个数组中的匹配元素

var arr = serviceList.filter(item => activeIds.indexOf(item.id) === -1);
演示

让activeIds=[202204]
让serviceList=[{
“id”:201,
“标题”:“a”
},
{  
“id”:202,
“标题”:“a”
},
{  
“id”:203,
“标题”:“c”
},
{  
“id”:204,
“标题”:“d”
},
{  
“id”:205,
“标题”:“e”
}];
设arr=serviceList.filter(函数(项){
返回activeIds.indexOf(item.id)=-1;
});

控制台日志(arr)
使用
filter
indexOf
方法。
indexOf
将检查当前id是否存在于
activeID
数组中

var-activeIds=[202204]
var服务列表=[{
“id”:201,
“标题”:“a”
},
{
“id”:202,
“标题”:“a”
},
{
“id”:203,
“标题”:“c”
},
{
“id”:204,
“标题”:“d”
},
{
“id”:205,
“标题”:“e”
}
];
var filteredArray=serviceList.filter(函数(项){
返回activeIds.indexOf(item.id)=-1
});

log(filteredArray)
您可以使用
filter
includes
方法执行此操作

constactiveids=[202204]
const serviceList=[{“id”:201,“title”:“a”},{“id”:202,“title”:“a”},{“id”:203,“title”:“c”},{“id”:204,“title”:“d”},{“id”:205,“title”:“e”}]
const result=serviceList.filter({id})=>!activeIds.includes(id));

console.log(result)
您可以组合
indexOf
来检查当前id是否在活动阵列上并过滤阵列。

与上面发布的不一样我有同样的疑问。似乎我们几乎同时发布OP使用箭头功能,为什么不应该包括工作?最初他没有这个问题!或者我可能错过了:(很好,我需要另一个,但我的解决方案是省去在
activeIds
前面的!这是我的解决方案。请投票吧,先生!如果id数组很长,我建议您将其转换为对象查找或映射,以避免在数组中对每个元素进行线性搜索。否则,使用array.filter函数就像sugges一样在下面的每一个答案中。