Javascript:从数组中删除重复项的更有效方法?

时间:2019-01-02 06:49:50

标签: javascript

当要从数组中删除重复项时,我永远不确定是否最好使用内置的Javascript功能(例如Set)来删除重复项,然后对其进行迭代以将值推入数组中

OR

如果最好遍历数组并跟踪哈希表中可见的整数,并拼接出已经被看到的重复项,则最好。

我以前曾经使用过两种方法,但就效率而言,我不确定哪种方法最好。
对于方法2(迭代并使用哈希表),由于循环是线性的,因此我假设循环的运行时间为(On),但是每次从数组中删除重复项的拼接都会增加吗? 就Set效率而言,我真的不知道幕后情况是什么,所以我不知道。但是,第二部分将需要循环(在运行时),以将它们放入Set中后放入数组中。

方法1:

let array = [1,1,2,2,3,3];

let set = new Set([...array]);

let newArray = [];
set.forEach((num) => {
   newArray.push(num);
})

方法2:

 let array = [1,1,2,2,3,3];

 let obj = {};

 for (var x = array.length - 1; x >= 0; x--) {
   if (obj[array[x]]) {
   array.splice(x,1);
   } else {
     obj[array[x]] = 1;
   }

 }

编辑:我知道如何做到这一点已经被问过很多次,但是我在问哪种方法可以提供最佳的运行时间。由于每次拼接需要O(n),所以我想知道它如何缩放,例如,使用Set或其他方法。

0 个答案:

没有答案