javascript - 如何从 JS 中的数组中删除一个子集?

标签 javascript arrays

假设我有一个数组,例如:[1, 1, 2, 2, 3, 3, 4, 5]
我想删除这个元素数组 [1, 2, 3, 4, 5]
所以最后我想留下 [1, 2, 3]

我试过使用下面的方法,但它从主数组中删除了元素的所有副本。

myArray = myArray.filter( function( el ) {
  return !toRemove.includes( el );
} );

最佳答案

这是使用filterindexOfsplice 实现的方法。

const input = [1, 1, 2, 2, 3, 3, 4, 5];

function removeSubset(arr, subset) {
  const exclude = [...subset];
  return arr.filter(x => {
    const idx = exclude.indexOf(x);
    if (idx >= 0) {
      exclude.splice(idx, 1);
      return false;
    }
    return true;
  });
}

console.log(removeSubset(input, [1, 2, 3, 4, 5]));

关于javascript - 如何从 JS 中的数组中删除一个子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54618504/

相关文章:

Javascript 内部更改数组值,任何修复?

javascript - 组合 JavaScript 数组

java - 将字节数组转换为 double 组

javascript - 将 JavaScript 模块添加到全局范围的跨平台方式是什么?

javascript - 如果div中的文本是x,则仅对x元素执行jquery

javascript - ThreejstextureLoader - 缩放和映射到网格

javascript - focusout() 无法使用 jQuery 运行

delphi - Delphi 中的高效缓存

php - 在PHP中查找总和的最接近值的算法

c - 树莓派上的结构段错误gcc