面试题答案
一键面试- 使用
Array.from()
- 代码示例:
const arrayLike = {0: 'a', 1: 'b', length: 2};
const arr = Array.from(arrayLike);
console.log(arr);
- **性能特点**:`Array.from()` 适用于各种类数组对象,并且支持映射函数。性能上,它是线性时间复杂度,在处理大型类数组对象时,性能相对稳定,因为它会遍历类数组对象的所有元素。
2. 使用扩展运算符 (...
)
- 代码示例:
const arrayLike = {0: 'a', 1: 'b', length: 2};
const arr = [...arrayLike];
console.log(arr);
- **性能特点**:扩展运算符在简单场景下简洁高效。对于小型类数组对象,性能表现优秀,因为其操作较为直接。但在处理大型类数组对象时,可能会因为创建新数组和复制元素等操作,性能略逊于 `Array.from()`,不过差距通常不明显。
3. 使用 Array.prototype.slice.call()
- 代码示例:
const arrayLike = {0: 'a', 1: 'b', length: 2};
const arr = Array.prototype.slice.call(arrayLike);
console.log(arr);
- **性能特点**:这种方法兼容性好,能在较旧的 JavaScript 环境中使用。性能方面,它也是线性时间复杂度,与 `Array.from()` 类似,但由于涉及到函数调用的开销,在现代 JavaScript 引擎下,性能可能略低于 `Array.from()` 和扩展运算符。