Javascript 比较两个数组并从数组中删除重复的元素

Javascript 比较两个数组并从数组中删除重复的元素,javascript,reactjs,Javascript,Reactjs,我想从一个数组中删除另一个数组中的所有元素。换句话说,我想比较两个数组,并从一个数组中删除所有重复的元素。 到目前为止,我有以下程序代码,但它不工作。这些元素不会被移除 React.useEffect(() => { const aLeft = right.filter((r) => !left.includes(r)); var array = [...left]; for (const [index, value] of array.entries()) { va

我想从一个数组中删除另一个数组中的所有元素。换句话说,我想比较两个数组,并从一个数组中删除所有重复的元素。 到目前为止,我有以下程序代码,但它不工作。这些元素不会被移除

React.useEffect(() => {

const aLeft = right.filter((r) => !left.includes(r));

var array = [...left];  

for (const [index, value] of array.entries()) {

  var item = array.indexOf(value); 

  if (item !== -1) {

    console.log(item);

    array.splice(item, 1);

    setLeft(array);

  }

}

}, []);
编辑

还是不行。关于这个问题:我有一个数据库,其中保存了图片的右侧(指定的受训人员)。左侧包含所有学员,他们最初也是通过UseFeffeKT方法从数据库中读取的。现在,我想在运行时比较这两个数组,而不是在左列的右侧显示所有参与者

React.useEffect(() => {
 const inters = teilnehmer.filter((x => !azubis.includes(x));

 setLeft(inters );

},[]);

这是
useMemo
的一个很好的候选者。生成的数组将被缓存,仅在
left
right
更改时重新计算

const intersection=useMoom(()=>{
const uniqueLeft=left.filter(item=>!right.includes(item));
const uniqueRight=right.filter(item=>!left.includes(item));
返回[…唯一左,…唯一右];
},[左,右];

这是
usemo
的一个很好的候选者。生成的数组将被缓存,仅在
left
right
更改时重新计算

const intersection=useMoom(()=>{
const uniqueLeft=left.filter(item=>!right.includes(item));
const uniqueRight=right.filter(item=>!left.includes(item));
返回[…唯一左,…唯一右];
},[左,右];

常数arr=[1,2,4,1]

Array.from(新集合(arr))


输出:-[1,2,4]

const arr=[1,2,4,1]

Array.from(新集合(arr))


输出:-[1,2,4]

这是否回答了您的问题?请参阅-您可能需要
right.filter(x=>!left.includes(x)).concat(left.filter(x=>!right.includes(x))另请参见:使用集合和集合运算的方法。这是否回答了您的问题?请参阅-您可能需要
right.filter(x=>!left.includes(x)).concat(left.filter(x=>!right.includes(x))另请参见:了解使用集合和集合操作的方法。