小编典典

使用Javascript数组计算集合差异的最快或最优雅的方法是什么?

javascript

AB为两个集合。我正在寻找一种 非常 快速或优雅的方法来计算它们之间的设置差异(A - BA \B,取决于您的偏好)。如标题所示,这两组存储和存储为Javascript数组。

笔记:

  • 壁虎特技可以
  • 我更喜欢本机函数(但是如果速度更快,我可以使用轻量级库)
  • 我看过但未测试JS.Set(请参阅上一点)

编辑: 我注意到有关包含重复元素的集合的评论。当我说“设置”时,我指的是数学定义,这意味着(除其他外)它们不包含重复的元素。


阅读 330

收藏
2020-05-01

共1个答案

小编典典

如果不知道这是否最有效,但可能最短

A = [1, 2, 3, 4];
B = [1, 3, 4, 7];

diff = A.filter(function(x) { return B.indexOf(x) < 0 })

console.log(diff);

更新到ES6:

A = [1, 2, 3, 4];
B = [1, 3, 4, 7];

diff = A.filter(x => !B.includes(x) );

console.log(diff);
2020-05-01