我有 2 个数组,如下所示:
arr1 = [a,b,c,a,c,b,a]
arr2 = [b,b,a,a,a,b,c]
我正在检查两个数组中每个项目的出现次数是否相同
例如a
在 arr1
中计数,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/