问题描述
因此,在JS中有多种方法可以将Array
转换为Set
。
示例#2 肯定是 O(n),因为它正在遍历数组的所有元素。 Example#1 是否也是如此?还是JS在后台为我们做了一些优化?
如果是,使用示例1 有什么缺点?
示例1
const arr = [ 1,3,2,5 ];
const set = new Set(arr);
console.log(set);
/*
Output: Set { 1,5 }
*/
示例2
const arr = [ 1,5 ];
const set = new Set();
arr.map(item => set.add(item));
console.log(set);
/*
Output: Set { 1,5 }
*/
解决方法
它仍然是O(n)
; JS没有一种神奇的方式将所有n
元素放入Set
而不实际遍历所有n
元素。低于O(n)
的唯一方法是跳过某些元素,如果必须将所有元素都考虑纳入Set
中,这显然是不可能的。