我试图让两个数据集相交,但是我做不到。例如,在下面的代码中,将我的Set和mySet2相交应该得到“1”,因为它们的集合中都有值“1”。
var mySet = new Set();
var mySet2=new Set();
mySet.add(1);
mySet.add(2);
mySet.add("HELLOOOOO");
mySet2.add("hi");
mySet2.add(1);
var a = Array(mySet, mySet2);
console.log(a);
mySet.forEach(function(value) {
console.log(value);
});
mySet2.forEach(function(value) {
console.log(value);
});
function intersection_destructive(a, b)
{
var result = new Array();
while( mySet.length > 0 && mySet2.length > 0 )
{
if (mySet[0] < mySet2[0] ){ mySet.shift(); }
else if (mySet[0] > mySet2[0] ){ mySet2.shift(); }
else /* they're equal */
{
result.push(mySet.shift());
mySet2.shift();
}
}
return result;
}
Set 1和Set 2中都有"1",但我的函数(intersection_destructive)没有返回它。我不知道如何求交集,我在stackoverflow上搜索并找到了intersection_destructive,但它对我没有起作用。我还尝试了:
array1.filter(function(n) {
return array2.indexOf(n) != -1
});
根据这个:JavaScript中数组交集的最简代码
但是当我尝试运行它时,filter
函数出现了错误。