我有两个数组
$array1=('18753933','18753933','18771982')
$array2=('18753933','18771982')
我将遍历每一个以比较每个数组中相同的值
var contarArticulosCargados=0;
for(var $i=0;$i<$array1.length;$i++) {
for(var $j=0;$j<$array2.length;$j++) {
if($array1[$i]===$array[$j]) {
countArticulosCargados++;
}
}
}
console.log(countArticlesLoaded);
我放入我的代码中的这个例子运行良好,也就是说,我正在做比较并且它运行没有问题。
我想做什么? (这是我不知道该怎么做)
如您所见,$array1
中的值为 18753933,$array2
中的值也是 18753933
。
我想要的是,当值被重复时,它被计算在内,在 $array1
中,值 18753933
是 2
次并且值 18771982
是 1
次。
我想看到这样的东西:
18753933 repeats: 2
18771982 is repeated: 1
您能告诉我我缺少什么吗?我总是发现很难在数组之间进行比较。谢谢。
最佳答案
简单地映射array2 并取过滤array1 的长度。
const a1 = ['18753933','18753933','18771982'];
const a2 = ['18753933','18771982'];
const res = a2.map(e => ({[e]: a1.filter(k => k === e).length}));
console.log(res);
要删除未找到的元素,您可以先过滤
a2.filter(e => a1.includes(e)).map(e => ({[e]: a1.filter(k => k === e).length}))
或之后
a2.map(e => ({[e]: a1.filter(k => k === e).length})).filter(e => Object.values(e).every(x => x > 0));
或者使用reduce
const a1 = ['18753933','18753933','18771982'];
const a2 = ['18753933','18771982'];
const res = a2.reduce((a, b) => {
const l = a1.filter(e => e === b).length;
if (l) a[b] = l;
return a;
}, {});
console.log(res);
关于javascript - 比较两个数组并计算事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55664849/