当前位置: 首页 > 面试题库 >

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

穆飞龙
2023-03-14
问题内容

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

笔记:

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

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


问题答案:

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

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);


 类似资料:
  • 问题内容: 我在Javascript中执行类似VisualBasic DateDiff的功能。 您给出两个日期和返回时间间隔(秒,分钟,天等)。 那么计算Javascript日期差异的最佳方法是什么? 问题答案: 像这样使用Date对象: 这将返回两个日期之间的毫秒数差。将其转换为秒,分钟,小时等并不难。

  • 问题内容: 到目前为止,这是我得到的: 这让我既震惊又浪费。如果存在firstChoice,则我将不必要地计算secondChoice。 还有一个更有效的版本: 在这里,如果不复制映射器或声明另一个局部变量,就无法将某些映射函数链接到最后。所有这些使代码比要解决的实际问题更加复杂。 我宁愿这样写: 但是可选:::显然不存在。怎么办? 问题答案: 试试这个: map方法为您提供了一个。然后,该方法将

  • 到目前为止我得到的是: 这让我觉得既可怕又浪费。如果第一个选择存在,我就不必要地计算第二个选择。 还有一个更有效的版本: 在这里,如果不复制映射器或声明另一个局部变量,我就无法将某个映射函数链接到最后。所有这些都使得代码比正在解决的实际问题更加复杂。 我宁愿这样写: 然而,可选的::可选的显然不存在。现在怎么办?

  • 问题内容: 我从书中得知,您应该为循环编写这样的代码: 因此不会每次都计算。 其他人则说编译器会对此做一些优化,因此您可以编写: 我只想知道哪种是最佳实践? 问题答案: 在使用大多数现代浏览器执行此测试之后… http://jsben.ch/dyM52 当前,最快的循环形式(我认为在语法上最明显)。 具有长度缓存的循环的标准 我想肯定的是,我为JavaScript引擎开发人员鼓掌。应该优化运行时间

  • 问题内容: 在MySQL中,哪种方式计算行数应该更快? 这个: 或者,替代方案: 有人会认为第一种方法应该更快,因为在内部确定类似情况时,这显然是数据库领域,而数据库引擎应该比其他任何人都要快。 问题答案: 当您使用count列索引时,它将是最好的结果。使用 MyISAM 引擎的Mysql 实际上存储行数,每次尝试对所有行进行计数时,它都不会对所有行进行计数。(基于主键的列) 使用PHP计数行不是

  • 我已经尝试了很多算法来渲染Mandelbrot集,包括简单的逃逸时间算法,以及优化的逃逸时间算法。但是,有没有更快的算法可以像我们在YouTube上看到的那样有效地产生真正深的缩放。此外,我很想得到一些想法,如何提高我的精度超过C/C