javascript - 比较两个数组并计算事件

标签 javascript jquery

我有两个数组

$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 中,值 187539332 次并且值 187719821 次。

我想看到这样的东西:

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/

相关文章:

jquery - CSS 将整个句子大写,特定字符串除外

javascript - 使用 jquery 显示和隐藏菜单

javascript - 将 localStorage 键添加到下拉列表中

javascript - 无法使用 Svelte 在 div 上的 drop 事件上阻止 Default()

javascript - 点击事件仅适用于表格的第一页

javascript - jquery 动画完成

javascript - 我可以简化很多 $.fn 吗?使用 javascript/jQuery 调用?

jquery - 样式日期选择器 : highlight specific dates

javascript - 在不重新加载页面的情况下将点击链接的 ID 传递给 PHP 代码

javascript - Powershell西里尔文通过node js输入编码