微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐