如何将对象转为Map?
### 如何将对象转为 Map

#### 核心方法
使用 `Object.entries()` 配合 `new Map()` 构造函数是最简洁的方式:

```javascript
const obj = { a: 1, b: 2 };
const map = new Map(Object.entries(obj));
// Map(2) {"a" => 1, "b" => 2}
```

#### 注意事项
1. **仅转换可枚举属性**:`Object.entries()` 只包含对象自身的可枚举属性
2. **Symbol键处理**:默认会忽略 Symbol 类型的键,需额外处理:
```javascript
const sym = Symbol();
const obj = { [sym]: 'symbol' };
const map = new Map([
...Object.entries(obj),
...Object.getOwnPropertySymbols(obj).map(key => [key, obj[key]])
]);
```

#### 替代方案
1. **手动遍历**:
```javascript
const map = new Map();
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
map.set(key, obj[key]);
}
}
```

2. **使用 Lodash**:
```javascript
import { toPairs } from 'lodash';
const map = new Map(toPairs(obj));
```

#### 最佳实践
- 简单场景直接用 `Object.entries()`
- 需要处理 Symbol 键时采用扩展方案
- 注意 Map 与 Object 的键类型差异(Map 支持任意类型键)
展开
评论