commonCount(ar1, ar2)
如果arr1 = [1,1,2,3,3]
和arr2 = [1,4,3,1,1]
,答案是3
我的思维过程:
1)如何检查arr1 [i]是否在arr2中?
2)如何从arr2中删除arr1 [i]?
答案 0 :(得分:4)
console.log([1,2,3,4,5].filter((n) => [1,1,2,10,11].includes(n)))
这是计算交集的代码。
过滤掉它们你会这样做
console.log([1,1,2,10,11].filter((n) => ![1,2,3,4,5].includes(n)))
要从数组x
中删除元素arr
,我们可以执行此操作
var array = [1,2,3];
var index = array.indexOf(3);
if( index >= 0)
array.splice(index,1);
删除元素也会回答有关如何检查数组中是否存在元素的问题。
答案 1 :(得分:0)
尝试使用arr2 .filter(val => !arr1.includes(val));
删除second array
var arr1 = [1, 1, 2, 3, 3];
var arr2 = [1, 4, 3, 1, 1];
arr2 = arr2 .filter(val => !arr1.includes(val));
console.log(arr1);
console.log(arr2);

答案 2 :(得分:0)
您可以使用array#reduce
将所有唯一值及其频率存储在对象中,然后使用array#filter
查看唯一对象来过滤结果,并在找到相同值后递减频率。之后只需返回长度。
const arr1 = [1,1,2,3,3],
arr2 = [1,4,3,1,1];
var commonCount = (ar1, ar2) => {
const uniques = ar1.reduce((res, v) => {
res[v] = (res[v] || 0) + 1;
return res;
},{});
const common = arr2.filter(v => uniques[v] > 0 && uniques[v]--);
return common.length;
}
console.log(commonCount(arr1,arr2));