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

时间:2019-12-20 05:19:51

标签: 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中的一个函数,该函数将删除两个数组均不匹配的情况

1 个答案:

答案 0 :(得分:3)

只需检查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)