在 JavaScript 中创建 Map 的浅表副本
How to create a shallow Copy of a Map in JavaScript
要创建 a 的浅表副本Map
:
- 将现有的
Map
作为参数传递给Map()
构造函数,例如
const newMap = new Map(oldMap)
. - 构造
Map()
函数接受一个可迭代对象,例如另一个Map
,并将键值对添加到新的Map
.
索引.js
const oldMap = new Map([ ['name', 'Tom'], ['country', 'Chile'], ]); // 👇️ {'name' => 'Tom', 'country' => 'Chile'} console.log(oldMap); const copy = new Map(oldMap); // 👇️ {'name' => 'Tom', 'country' => 'Chile'} console.log(copy);
我们使用
Map()
构造函数创建现有Map
.
构造函数采用的唯一参数是可迭代对象,例如数组或另一个Map
.
iterable 中的元素应该是键值对,例如二维数组或另一个Map
对象。
索引.js
const example1 = [ ['name', 'Tom'], ['country', 'Chile'], ]; const example2 = new Map([ ['name', 'Tom'], ['country', 'Chile'], ]);
每个键值对都被添加到新的Map
.
新Map
对象在内存中具有完全不同的引用和位置。向其添加键值对不会与现有的Map
.
索引.js
const oldMap = new Map([ ['name', 'Tom'], ['country', 'Chile'], ]); // {'name' => 'Tom', 'country' => 'Chile'} console.log(oldMap); const copy = new Map(oldMap); // 👇️ {'name' => 'Tom', 'country' => 'Chile'} console.log(copy); copy.set('age', 30); // 👇️ {'name' => 'Tom', 'country => 'Chile', 'age' => 30} console.log(copy); // 👇️ {'name' => 'Tom', 'country => 'Chile'} console.log(oldMap);