javascript - 在 JavaScript 中,如何检查一个数组是否包含另一个数组中的所有元素(包括计数)?

标签 javascript arrays

我有两个数组:

arr1 = [1, 2, 3, 1, 2, 3, 4]
arr2 = [1, 3, 1, 1]
arr3 = [1, 1, 2, 2, 3]

使用 arr1 作为基线,arr2 不匹配,因为它包含三个 1,而 arr1只有两个。但是,arr3 应该返回 true,因为它具有来自 arr1 的元素。

我试过了

if(_.difference(arr2, arr1).length === 0)

但这没有考虑出现的次数

最佳答案

您可以计算第一个数组中的所有值,并使用 every 迭代第二个数组,如果未给定值或值为零,则提前返回,否则递减计数并继续。

function check(a, b) {
    var count = a.reduce((o, v) => (o[v] = (o[v] || 0) + 1, o), {});
    return b.every(v => count[v] && count[v]--);
}

var arr1 = [1, 2, 3, 1, 2, 3, 4],
    arr2 = [1, 3, 1, 1],
    arr3 = [1, 1, 2, 2, 3];

console.log(check(arr1, arr2)); // false
console.log(check(arr1, arr3)); //  true

关于javascript - 在 JavaScript 中,如何检查一个数组是否包含另一个数组中的所有元素(包括计数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56791581/

相关文章:

javascript - FILTER_VALIDATE_EMAIL 正则表达式到 JavaScript?

java - java中的拼字游戏数组

java - 如何检查 JSONArray 元素是否为空

javascript - 为什么删除并重新添加元素后事件监听器不起作用

javascript - 如何通过Qt模拟按键事件并在QML的JavaScript中使用它?

javascript - Nodejs中如何处理一个函数下多个回调的风险

javascript - 使用AutoHotKey输出JavaScript?

arrays - Google Sheets 如何根据单元格引用过滤列

javascript - Node JS undefined variable

javascript - 使用 JS 编辑 JSON 数据结构