javascript - 如何检查一个项目在javascript中的2个不同数组中的出现次数是否相同?

标签 javascript

我有 2 个数组,如下所示:

arr1 = [a,b,c,a,c,b,a] arr2 = [b,b,a,a,a,b,c]

我正在检查两个数组中每个项目的出现次数是否相同

例如aarr1 中计数,arr2 是 3。如果它与 相同,则明智地想检查其余项目继续break 循环

      for(let i=0; i < this.arr1.length; i++){
        for(let j=0; j < this.arr2.length; j++){
          if(this.arr1[i] === this.arr2[j]){
            let count1 = this.arr1.filter((t) => {
              return t == this.arr1[i];
            });

            let count2 = this.arr2.filter((e) => {
              return e == this.arr2[j];
            });

            if(count1.length !== count2.length){
              // break the loops and return false
            }
          }
        }
      }  

以上代码无法正常工作。我哪里做错了。

最佳答案

您可以使用哈希表并为一个数组向上计数,为另一个数组向下计数,并且只取值不为零的键。

var array1 = ['a', 'b', 'c', 'a', 'c', 'b', 'a'],
    array2 = ['b', 'b', 'a', 'a', 'a', 'b', 'c'],
    count = Object.create(null),
    result;
    
array1.forEach(a => count[a] = (count[a] || 0) + 1);
array2.forEach(a => count[a] = (count[a] || 0) - 1);

result = Object.keys(count).filter(k => count[k]);

console.log(result);
console.log(count);

关于javascript - 如何检查一个项目在javascript中的2个不同数组中的出现次数是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49253008/

相关文章:

javascript - socket.io 将数据发送到匹配的套接字

javascript - 将网页的一部分转换为范围

javascript - 从 Canvas 中删除图像 - fabricjs (javascript)

javascript - Foundation 5 Canvas 外菜单总是出现

javascript - Mootools:拒绝设置不安全 header "Connection"

javascript - 无法从另一个 .ts 文件访问 .ts 文件中定义的函数定义

javascript - 检查.push之前数组中是否存在数据

javascript - Grunt - pkg 未定义

javascript - 变量递增返回 NaN

javascript - 使用字符串变量作为对象字段