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))