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

dev*_*ato 2 javascript arrays big-o computer-science set

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

示例 #2绝对是O(n),因为它遍历数组的所有元素。示例 #1 的情况是否相同?或者JS在后台为我们做一些优化?

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

示例 1

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

console.log(set);

/*
    Output: Set { 1, 3, 2, 5 }
*/
Run Code Online (Sandbox Code Playgroud)

示例 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 }
*/
Run Code Online (Sandbox Code Playgroud)

Sha*_*ger 5

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