Javascript 从另一个对象数组的字符串数组中筛选值
我试图只获取对象数组中不存在的字符串Javascript 从另一个对象数组的字符串数组中筛选值,javascript,typescript,Javascript,Typescript,我试图只获取对象数组中不存在的字符串 var objects = [{name:'a',is:false},{name:'b',is:false},{name:'c',is:false}]; var strings = ['a','b','z','x']; let result = strings.filter(o1 => !objects.includes(o2=> o2.name === o1)); console.log(result) 因此,从对象数组中,结果应仅为“z”
var objects = [{name:'a',is:false},{name:'b',is:false},{name:'c',is:false}];
var strings = ['a','b','z','x'];
let result = strings.filter(o1 => !objects.includes(o2=> o2.name === o1));
console.log(result)
因此,从
对象
数组中,结果应仅为“z”和“x”,您可以创建(查找
),其中键为名称
属性,值为的否定版本
属性
Map {
'a': true,
'b': true,
'c': true
}
然后,您可以使用此查找来筛选字符串数组。如果映射的值为true
,则可以将其从数组中删除(返回false),否则,如果映射没有当前字符串,则可以将其保留在数组中。通过预处理对象数组创建贴图/对象,您无需在过滤器()中使用内部循环,如果数组大小增加,则可以提高代码的整体效率
const objects=[{name:'a',is:false},{name:'b',is:false},{name:'c',is:false}];
常量字符串=['a','b','z','x'];
const lookup=newmap(objects.Map({name,is})=>[name,!is]);
const result=strings.filter(v=>!lookup.get(v));
控制台日志(结果)
从对象
数组中,您可以创建(查找
),其中键作为名称
属性,值作为属性的否定版本
Map {
'a': true,
'b': true,
'c': true
}
然后,您可以使用此查找来筛选字符串数组。如果映射的值为true
,则可以将其从数组中删除(返回false),否则,如果映射没有当前字符串,则可以将其保留在数组中。通过预处理对象数组创建贴图/对象,您无需在过滤器()中使用内部循环,如果数组大小增加,则可以提高代码的整体效率
const objects=[{name:'a',is:false},{name:'b',is:false},{name:'c',is:false}];
常量字符串=['a','b','z','x'];
const lookup=newmap(objects.Map({name,is})=>[name,!is]);
const result=strings.filter(v=>!lookup.get(v));
控制台日志(结果)
使用map
简化数组,然后使用filter和include查找不属于对象的字符串
var objects=[{name:'a',is:false},{name:'b',is:false},{name:'c',is:false}];
变量字符串=['a','b','z','x'];
让name=objects.map(dataItem=>dataItem.name)
让filteredNames=strings.filter(stringItem=>!name.includes(stringItem))
console.log(filteredNames)
用于简化数组,然后使用filter和include查找不属于对象的字符串
var objects=[{name:'a',is:false},{name:'b',is:false},{name:'c',is:false}];
变量字符串=['a','b','z','x'];
让name=objects.map(dataItem=>dataItem.name)
让filteredNames=strings.filter(stringItem=>!name.includes(stringItem))
log(filteredNames)
现在允许回调函数
不使用此选项,请查找:
var objects=[{name:'a',is:false},{name:'b',is:false},{name:'c',is:false}];
变量字符串=['a','b','z','x'];
让result=strings.filter(o1=>!objects.find(o2=>o2.name==o1));
log(结果)
现在允许回调函数
不使用此选项,请查找:
var objects=[{name:'a',is:false},{name:'b',is:false},{name:'c',is:false}];
变量字符串=['a','b','z','x'];
让result=strings.filter(o1=>!objects.find(o2=>o2.name==o1));
console.log(结果)