javascript – 比较两个数组的有效方法

我正在使用两个数组来完成检查array1中是否存在array1中的值的任务.如果是这样,删除array1中的内容并继续检查,直到array1为空.如果它们不存在则只从函数返回.我正在使用 Javascript

我使用经典的两个for循环实现了它,它的运行时间为o(n * 2).我想知道是否有任何其他有效的方法来使用javascript支持的任何其他数据结构来执行此操作.以下是我目前的实施情况

for(var j = 0; j < tempArray.length; j++){
     for(var k = 0; k < this.probsSolved.length; k++){
         if(tempArray[j] == this.probsSolved[k]){
             tempArray.splice(j,1);            
             if(tempArray.length <= 0){
                 this.updateAchievements(achID);
                 this.storage.set(achKey,1);
                 return;
             }         
     }
}

问题是我必须调用每5秒执行此操作的函数,这对我来说效率非常低.

有人可以提出一个更好的算法或数据结构,其性能比我可以使用的更好,如果是这样,我将如何使用.

解决方法

将array2的元素放在字典数据结构中(以确保快速查找)可能会有所帮助.

How to do associative array/hashing in JavaScript

在伪代码中,我会接近以下内容

dict = {}

foreach elem in array2:
    insert elem in dict

foreeach elem in array1:
    if elem in dict:
        remove elem from array1

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...