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
并预先添加到每个集合中