javascript - 如何在不使用过滤方法的情况下根据两个数组的出现次数来比较它们?

标签 javascript arrays filter

大家好,你能帮我创建一个函数,我可以根据元素的出现次数从数组中删除元素

例如考虑以下两个数组:

array 1 = [1,1,1,2,2]

array 2 = [1]

上述预期结果:

array 3 = [1,1,2,2]

例如考虑下面两个数组

array 1 = [1,1,1,2,2]

array 2 = [1,1]

上述预期结果:

array 3 = [1,2,2]

我使用了过滤器,但它删除了所有出现的 1

array1 = array1.filter(item => array2.indexOf(item) < 0);

我需要 JavaScript 中的一个函数,它将删除两个数组的匹配次数

最佳答案

只需检查 array2 中是否出现该情况,如果发现则使用 splice 将其删除。

const array1 = [1,1,1,2,2]
const array2 = [1,1]
const output = []

array1.forEach(item => {
  const array2Index = array2.indexOf(item);
  if (array2Index > -1) {
    // remove array2 occurance
    array2.splice(array2Index, 1);
  } else {
    output.push(item)
  }
});

console.log(output)

关于javascript - 如何在不使用过滤方法的情况下根据两个数组的出现次数来比较它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59420195/

相关文章:

arrays - UITableView SearchBar过滤查询

date - Elasticsearch 日期范围过滤器不起作用

javascript - SplitText 删除换行符?

javascript - webpack: "[ERR_REQUIRE_ESM]: Must use import to load ES Module"- 但我正在使用导入!

javascript - 在 Typescript 中创建(甚至更多泛型)函数

c++ - 将二维数组指针参数分配给局部数组指针变量

javascript - 按一个值对嵌套数组排序,然后按另一个值排序

php - sql复选框和多选过滤

javascript - 使用纯 javascript 从具有相同类的所有 div 获取值

arrays - React 中的过滤器方法在 map 可用时不起作用