Array.from()
的时间复杂度是什么?例如:const set = new Set();
set.add('car');
set.add('cat');
set.add('dog');
console.log(Array.from(set)); // time complexity of making this convertion from Set to Array
Array.from()
的时间复杂度是什么?例如:const set = new Set();
set.add('car');
set.add('cat');
set.add('dog');
console.log(Array.from(set)); // time complexity of making this convertion from Set to Array
这是一个 O(n)
的操作。当应用于可迭代对象(例如一个 Set
),Array.from
迭代该可迭代对象,并将每个返回的元素放入新数组中,因此对于可迭代对象返回的每个元素都会进行一次操作。
迭代次数与集合元素数量成正比,因此时间复杂度始终为O(n)。实际时间复杂度为从集合中检索值的O(n),将值推入数组的O(n)。
O(n) + O(n) = O(2n)
但是,由于我们在计算时没有考虑常数值,因此使用 n 值进行计算应为 O(n)。
Array.from()
有一个不同的“问题”;与其他创建该数组的方法相比,它非常慢。这似乎是由于该方法可能需要处理各种输入类型而产生的开销所致。因此,对于小型数据结构,这种开销可能会超过实际任务的执行时间。 - Thomas