Javascript 筛选2个数组中的唯一元素

Javascript 筛选2个数组中的唯一元素,javascript,arrays,filter,Javascript,Arrays,Filter,我编写了一个函数,该函数接收2个数组并返回一个数组,该数组包含两个数组中都存在的元素。 例如,如果我通过[6,7,8,9]和[1,8,2,6],它应该返回[6,8] 我的目的不是在这里使用循环 我使用以下代码: const uniqueElements= (arr1, arr2) => { return arr1.filter(it1=> arr2.filter((it2) => it2===it1).length>0) } 但是,如果数组中存在重复元素(例如[6,7,

我编写了一个函数,该函数接收2个数组并返回一个数组,该数组包含两个数组中都存在的元素。 例如,如果我通过[6,7,8,9]和[1,8,2,6],它应该返回[6,8]

我的目的不是在这里使用循环

我使用以下代码:

const uniqueElements= (arr1, arr2) => {
return arr1.filter(it1=> arr2.filter((it2) => it2===it1).length>0)
}
但是,如果数组中存在重复元素(例如[6,7,8,9,6]和[1,8,2,6,6]),则返回[6,8,6]


我应该如何修改代码,使其只返回唯一的元素而不返回重复的元素?不使用循环是否可行?

对于您的场景,请使用以下选项-

constant uniqueElements= (arr1, arr2) => {
return Array.from(new Set(arr1.filter(it1=> arr2.filter((it2) => it2===it1).length>0)))
}

希望这对您的场景有所帮助使用此-

constant uniqueElements= (arr1, arr2) => {
return Array.from(new Set(arr1.filter(it1=> arr2.filter((it2) => it2===it1).length>0)))
}
希望这有助于使用以下设置解决方案:

使用“设置自”的解决方案:


如果您只想获得在两个数组上都出现的唯一值,您只需首先将两个数组的值都更改为Set,循环遍历一个集合并检查它是否出现在另一个集合上,如果出现则从filter返回true,否则返回false

const uniqueElements=(arr1,arr2)=>{
设set1=新集合(arr1)
设set2=新集合(arr2)
返回[…set1].filter(it1=>set2.has(it1))
}
日志(uniqueElements([6,7,8,9],[1,8,2,6]))

log(uniqueElements([6,7,8,9,6],[1,8,2,6,6]))
如果您只想获得出现在两个数组上的唯一值,您只需首先将两个数组的值都更改为Set,循环一个集合并检查它是否出现在另一个集合上,如果出现,则从筛选器返回true,否则返回false

const uniqueElements=(arr1,arr2)=>{
设set1=新集合(arr1)
设set2=新集合(arr2)
返回[…set1].filter(it1=>set2.has(it1))
}
日志(uniqueElements([6,7,8,9],[1,8,2,6]))

log(uniqueElements([6,7,8,9,6],[1,8,2,6,6])
只需使用的回调中写入条件:

const uniqueElements = (arr1, arr2) => {
  let viewed = [];
  return arr1.filter(it1 => {
    let found = arr2.some((it2) => it2 === it1) && viewed.indexOf(it1) == -1;
    viewed.push(it1);
    return found;
  });
}
注意:

通过使用
viewsed
数组和
viewsed.indexOf(it1)=-1
条件,这不需要重复

演示:

const uniqueElements=(arr1,arr2)=>{
让我们看看=[];
返回arr1.filter(it1=>{
让found=arr2.some((it2)=>it2==it1)和&view.indexOf(it1)=-1;
查看。推送(it1);
发现退货;
});
}
设a1=[6,7,8,9,6];
设a2=[1,8,2,6,6];

控制台日志(单一元素(a1,a2))只需使用即可在的回调中写入条件:

const uniqueElements = (arr1, arr2) => {
  let viewed = [];
  return arr1.filter(it1 => {
    let found = arr2.some((it2) => it2 === it1) && viewed.indexOf(it1) == -1;
    viewed.push(it1);
    return found;
  });
}
注意:

通过使用
viewsed
数组和
viewsed.indexOf(it1)=-1
条件,这不需要重复

演示:

const uniqueElements=(arr1,arr2)=>{
让我们看看=[];
返回arr1.filter(it1=>{
让found=arr2.some((it2)=>it2==it1)和&view.indexOf(it1)=-1;
查看。推送(it1);
发现退货;
});
}
设a1=[6,7,8,9,6];
设a2=[1,8,2,6,6];

控制台日志(单一元素(a1,a2))
可能的重复项将结果包装在
集合中
以删除重复项,然后使用
数组。从
获取数组,您可以将结果分组到
数组之后。筛选
。您可以使用像
linq.js
这样的库进行分组。可能的重复项将结果包装在
集合中
以删除重复项,然后使用
数组。从
获取数组,您可以在
数组之后对结果进行分组。筛选
。您可以使用像
linq.js
这样的库进行分组。如果
a
b
都是集合,那么就不需要外部
集合
。如果
a
b
都是集合,那么就不需要外部
集合
。请记住,这就是为什么不总是建议使用
Set
,尤其是在可以避免的情况下:@cŝdk可以通过使用方便地传输,如果不使用babel,则可以使用。请记住,这就是为什么不总是建议使用
Set
,尤其是在可以避免的情况下。)@cŝdk可以通过使用方便地传输,如果不使用巴别塔,则可以使用