Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.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

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 获取数组中不在对象值中的项_Javascript_Arrays_Object_Filter - Fatal编程技术网

Javascript 获取数组中不在对象值中的项

Javascript 获取数组中不在对象值中的项,javascript,arrays,object,filter,Javascript,Arrays,Object,Filter,我怎样才能得到“豆科植物”这个项目 这就是我尝试的: let arr=['cafe'、'水果'、'豆类'] 设objs=[ {name:'cafe'}, {name:'水果'} ] 让result=arr.filter(x=>objs.map(y=>x!=y.name)); console.log(结果) /* 预期结果=['豆类'] */ let arr=['cafe'、'水果'、'豆类'] 设objs=[ {name:'cafe'}, {name:'水果'} ] 让结果=arr.filte

我怎样才能得到“豆科植物”这个项目

这就是我尝试的:

let arr=['cafe'、'水果'、'豆类']
设objs=[
{name:'cafe'},
{name:'水果'}
]
让result=arr.filter(x=>objs.map(y=>x!=y.name));
console.log(结果)
/*
预期结果=['豆类']
*/
let arr=['cafe'、'水果'、'豆类']
设objs=[
{name:'cafe'},
{name:'水果'}
]
让结果=arr.filter(x=>{
const values=objs.map(y=>y.name)
返回!个值。包括(x);
});
console.log(结果)
let arr=['cafe'、'水果'、'豆类']
设objs=[
{name:'cafe'},
{name:'水果'}
]
const values=objs.map(y=>y.name)
让result=arr.filter(x=>!values.includes(x));
console.log(结果)
试试这个

let arr=['cafe'、'水果'、'豆类']
设objs=[
{name:'cafe'},
{name:'水果'}
]
让result=arr.filter(x=>objs.map(y=>y.name).indexOf(x)=-1);
console.log(结果)
问题就在这里

让result=arr.filter(x=>objs.map(y=>x!=y.name))

请注意,它将返回一个数组

map()方法创建一个新数组,其中填充了对调用数组中的每个元素调用所提供函数的结果

解决方案: 您应该在内部定义返回
true
false
的条件。 因此,您可以使用
每个
包含
,如下所示:

let arr=['cafe'、'水果'、'豆类']
设objs=[
{name:'cafe'},
{name:'水果'}
];
log(arr.filter(x=>objs.every(obj=>obj.name!==x));
//这里有更多的方法
log(arr.filter(x=>objs.filter(y=>x!=y.name).length>1));

log(arr.filter(x=>!objs.map(r=>r.name).includes(x))let arr = ['cafe', 'fruit', 'legumes'] let objs = [ {name: 'cafe'}, {name: 'fruit'} ] let result = arr.filter(x => objs.every(obj => obj.name !== x))