Javascript 如何从对象数组中获取从未出现在特定属性中的值
我有一个数组,其中包含具有两个属性的对象列表Javascript 如何从对象数组中获取从未出现在特定属性中的值,javascript,arrays,typescript,ecmascript-6,ecmascript-5,Javascript,Arrays,Typescript,Ecmascript 6,Ecmascript 5,我有一个数组,其中包含具有两个属性的对象列表source和target。我想找到一个从未出现在目标中的值 目前,我想出了一个非常奇怪的解决方案。根据提供的代码,我通过迭代a数组来创建两个单独的数组全部包含所有元素,目标仅包含目标元素。然后我对它应用一个过滤器,它返回答案 const a = [ { source: '2', target: '3' }, { source: '1', target: '2' }, { source: '3', targe
source
和target
。我想找到一个从未出现在目标中的值
目前,我想出了一个非常奇怪的解决方案。根据提供的代码,我通过迭代a
数组来创建两个单独的数组<代码>全部
包含所有元素,目标仅包含目标元素。然后我对它应用一个过滤器,它返回答案
const a = [
{ source: '2', target: '3' },
{ source: '1', target: '2' },
{ source: '3', target: '4' },
{ source: '4', target: '5' }
];
const all = ['1', '2', '3', '4', '5'];
const targets = ['3', '2', '4', '5'];
console.log(all.filter(e => !targets.includes(e))[0]);
我们是否有一些有效的解决方案,不需要创建这两个数组,而且我知道返回元素将是唯一的一个。所以我不想得到一个数组作为答案您可以使用
.find
查找第一个匹配元素:
const a=[
{源:'2',目标:'3'},
{源:'1',目标:'2'},
{源:'3',目标:'4'},
{源:'4',目标:'5'}
];
常量源=[];
常量目标=[];
a、 forEach(({source,target})=>{
源。推送(源);
目标。推(目标);
});
log(sources.find(e=>!targets.includes(e))
find()
返回在数组中找到的第一个对象。目标值始终是串联的吗?应该是1到n?如何创建all
数组?目标值并不总是串联的。我关心的是在从未出现在目标中的所有值中查找值。但是我正在创建的所有值是什么;a、 forEach(({source,target})=>{allC.push(source);allC.push(target);});console.log(新集合(allC));有没有办法不创建此目标数组并使用现有的a
数组只需遍历a
并预先添加到每个集合中