Array.of和Array.from的区别
时间: 2024-09-29 09:00:38 浏览: 50
`Array.of()` 和 `Array.from()` 都是 JavaScript 中用于创建新数组的方法,但它们有以下几个关键区别:
1. **创建数组的语法**:
- `Array.of()` 方法接受任意数量的参数,每个参数会被转化为元素并放入新的数组中,如果参数是一个可迭代对象(如数组、字符串等),它会直接复制整个对象。
```javascript
let arr1 = Array.of(1, 'two', [3, 4]); // [1, "two", [3, 4]]
```
2. **处理空值**:
- 如果 `Array.of()` 接收到 undefined 或 null,会将其转换为相应类型的空值(undefined 或 [])。
- `Array.from()` 对 undefined 或 null 更为智能,可以跳过这些值,并不会生成空数组。
3. **可迭代对象**:
- `Array.from()` 可以将非数组的可迭代对象(如 Set、Map 或生成器函数)转换成数组。
```javascript
let set = new Set([1, 2, 3]);
let arr2 = Array.from(set); // [1, 2, 3]
```
4. **遍历顺序**:
- 当从可迭代对象转换时,`Array.from()` 按照原顺序添加元素到新数组,而 `Array.of()` 的插入顺序并不保证。
**相关问题--:**
1. 在哪些场景下会选择使用 `Array.of()` 而不是 `Array.from()`?
2. 为什么在某些情况 `Array.from()` 更受欢迎?
3. 如果我想保持原始元素顺序,应该使用哪个方法?
阅读全文