js写代码,遍历Map A和Map B,如果Map A中的当前key存在于Map B中,则将Map A的value1和Map B的value1,组合成新的Map C,Map C不要key
时间: 2025-06-18 08:43:01 浏览: 9
以下是实现您需求的解决方案,使用 JavaScript 遍历 `Map A` 和 `Map B`,并将它们的值组合成一个新的 `Map C`,其中 `Map C` 不包含键,只存储值。
---
### 解决方案
```javascript
// 定义 Map A 和 Map B
const mapA = new Map([
['key1', 'valueA1'],
['key2', 'valueA2'],
['key3', 'valueA3']
]);
const mapB = new Map([
['key2', 'valueB2'],
['key3', 'valueB3'],
['key4', 'valueB4']
]);
// 创建新的 Map C
const mapC = new Map();
// 遍历 Map A
mapA.forEach((valueA, keyA) => {
// 检查 Map B 中是否存在相同的 key
if (mapB.has(keyA)) {
const valueB = mapB.get(keyA);
// 将 Map A 和 Map B 的值组合成数组,并存入 Map C
// 使用自增索引作为新 key(确保 Map C 不显示原始 key)
mapC.set(mapC.size, [valueA, valueB]);
}
});
// 输出 Map C
console.log(mapC);
// Map(2) { 0 => [ 'valueA2', 'valueB2' ], 1 => [ 'valueA3', 'valueB3' ] }
```
---
### 解释
1. **定义 `Map`**:
- 使用 `new Map()` 创建两个 `Map` 对象:`mapA` 和 `mapB`。
- `mapA` 包含键值对 `['key1', 'valueA1']`, `['key2', 'valueA2']`, `['key3', 'valueA3']`。
- `mapB` 包含键值对 `['key2', 'valueB2']`, `['key3', 'valueB3']`, `['key4', 'valueB4']`。
2. **遍历 `Map A`**:
- 使用 `mapA.forEach((valueA, keyA) => {...})` 遍历 `Map A` 中的每个键值对。
- `valueA` 是当前键对应的值,`keyA` 是当前键。
3. **检查 `Map B` 中是否存在相同键**:
- 使用 `mapB.has(keyA)` 检查 `Map B` 中是否存在与 `keyA` 相同的键。
- 如果存在,则通过 `mapB.get(keyA)` 获取 `Map B` 中对应的值。
4. **组合值并存入 `Map C`**:
- 将 `Map A` 的值和 `Map B` 的值组合成一个数组 `[valueA, valueB]`。
- 使用 `mapC.size` 作为新的键(即自增索引),确保 `Map C` 不显示原始键。
- 使用 `mapC.set(mapC.size, [valueA, valueB])` 将组合后的值存入 `Map C`。
5. **输出结果**:
- 最终的 `Map C` 包含键值对 `0 => [ 'valueA2', 'valueB2' ]` 和 `1 => [ 'valueA3', 'valueB3' ]`,其中键是自增索引,表示 `Map C` 不依赖于原始键。
---
### 示例输出
假设输入的 `mapA` 和 `mapB` 如上所示,运行上述代码后,控制台输出如下:
```
Map(2) {
0 => [ 'valueA2', 'valueB2' ],
1 => [ 'valueA3', 'valueB3' ]
}
```
---
阅读全文
相关推荐

















