我正在使用两个数组来完成检查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; } } }
解决方法
将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