我正在寻找一种方法来了解数组是否包含所有有区别的元素。
例如,b.containsDistinct(a) 将返回 true,而 c.containsDistinct(a) 将返回 false。
a = [1, 1, 1, 2]
b = [1, 2, 1, 1, 3] // return true
c = [1, 2, 3] // return false
我能找到的解决方案只有 a.every(i => b.indexOf(i) !== -1)
但是对于元素相同的情况不起作用
你会如何解决这个问题?
最佳答案
您可以计算值并检查计数是否为零或更小。
function distinct(a, b) {
var counts = {};
a.forEach(v => counts[v] = (counts[v] || 0) + 1);
b.forEach(v => counts[v] = (counts[v] || 0) - 1);
return Object.values(counts).every(count => count <= 0);
}
console.log(distinct([1, 1, 1, 2], [1, 2, 1, 1, 3]));
console.log(distinct([1, 1, 1, 2], [1, 2, 3]));
关于javascript - 如何查找数组是否包含具有相同元素的另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58580861/