将数组转换为 Set 的时间复杂度 (Big-O)

Time complexity (Big-O) of converting an array to a Set

所以在 JS 中有多种方法可以将 Array 转换为 Set

Example #2 肯定是 O(n) 因为遍历数组的所有元素。 Example #1 的情况是否相同?还是JS在后台给我们做了一些优化?

如果是,使用示例 #1 有什么缺点吗?

示例 1

const arr = [ 1, 3, 2, 3, 5 ];
const set = new Set(arr);

console.log(set);

/*
    Output: Set { 1, 3, 2, 5 }
*/

示例 2

const arr = [ 1, 3, 2, 3, 5 ];    
const set = new Set();
arr.map(item => set.add(item));

console.log(set);

/*
    Output: Set { 1, 3, 2, 5 }
*/

还是O(n); JS 没有神奇的方法可以将所有 n 元素放入 Set 而无需实际遍历所有 n 元素。低于 O(n) 的唯一方法是跳过某些元素,如果必须考虑将所有元素包含在 Set.

中,这显然是不可能的