如何将对象转为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. **手动遍历**(适用于需要特殊处理的场景):
```javascript
const map = new Map();
Object.keys(obj).forEach(key => {
map.set(key, obj[key]);
});
```
2. **处理嵌套对象**(浅层转换):
```javascript
const deepObj = { a: { x: 1 }, b: [2] };
const deepMap = new Map(
Object.entries(deepObj).map(([k, v]) => [k, new Map(Object.entries(v))])
);
```
#### 注意事项
- 仅转换对象**自身可枚举属性**
- Symbol 类型键会被忽略(Map支持Symbol但`Object.entries`不包含)
- 值为对象时是**浅拷贝**
#### 最佳实践
- 简单转换优先用 `new Map(Object.entries(obj))`
- 需要深度转换建议使用专用工具库(如 lodash)
- 转换后可用 `map.get('key')` 替代 `obj.key` 访问
### 如何将对象转为 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. **手动遍历**(适用于需要特殊处理的场景):
```javascript
const map = new Map();
Object.keys(obj).forEach(key => {
map.set(key, obj[key]);
});
```
2. **处理嵌套对象**(浅层转换):
```javascript
const deepObj = { a: { x: 1 }, b: [2] };
const deepMap = new Map(
Object.entries(deepObj).map(([k, v]) => [k, new Map(Object.entries(v))])
);
```
#### 注意事项
- 仅转换对象**自身可枚举属性**
- Symbol 类型键会被忽略(Map支持Symbol但`Object.entries`不包含)
- 值为对象时是**浅拷贝**
#### 最佳实践
- 简单转换优先用 `new Map(Object.entries(obj))`
- 需要深度转换建议使用专用工具库(如 lodash)
- 转换后可用 `map.get('key')` 替代 `obj.key` 访问
展开
评论
点赞