ECMAScript 2015(简称 ES2015 或 ES6)引入了许多新的语言特性,其中之一是 Map 集合。Map 对象是一种简单的键/值存储结构,类似于对象,但它允许任意类型的键(而不仅仅是字符串)。通过使用 Map 类可以使开发者更方便地存储和操作数据。
创建 Map 对象
在创建 Map 对象时,我们可以使用以下方式:
let map = new Map();
也可以直接传入键值对的数组:
let map = new Map([ ['key1', 'value1'], ['key2', 'value2'] ]);
Map 对象的方法
set(key, value)
Map 对象通过 set() 方法存储键值对:
let map = new Map(); map.set('key1', 'value1'); map.set('key2', 'value2');
get(key)
Map 对象可以通过 get() 方法获取存储在其中的值:
let map = new Map(); map.set('key1', 'value1'); map.get('key1'); // 'value1'
has(key)
Map 对象可以通过 has() 方法检查其是否存储了指定的键:
let map = new Map(); map.set('key1', 'value1'); map.has('key1'); // true map.has('nonexistent_key'); // false
delete(key)
Map 对象可以通过 delete() 方法删除存储在其中的键值对:
let map = new Map(); map.set('key1', 'value1'); map.delete('key1'); // true map.has('key1'); // false
clear()
Map 对象可以通过 clear() 方法清除其所有存储的键值对:
let map = new Map(); map.set('key1', 'value1'); map.set('key2', 'value2'); map.clear(); map.has('key1'); // false map.has('key2'); // false
size
Map 对象可以通过 size 属性获取其存储的键值对数量:
let map = new Map(); map.set('key1', 'value1'); map.set('key2', 'value2'); map.size; // 2
Map 迭代器
Map 对象可以使用 for...of 循环进行迭代,每个迭代器对象都包含一个键值对数组,其中键在索引 0 中,值在索引 1 中:
-- -------------------- ---- ------- --- --- - --- ----- -------- ---------- -------- --------- --- --- ---- ----- ------ -- ---- - --------------- - - - - - ------- - -- ----- - ------- -- ----- - -------
案例分析
现在我们将通过一个实际的案例,深入了解如何使用 Map 来存储和操作数据。
需求说明
我们有一个学生数据集合,需要存储每个学生的姓名和成绩,并能够进行成绩排序和查询。
实现
我们可以通过 Map 来存储学生数据集合,其中键为学生姓名,值为学生成绩:
let students = new Map(); students.set('Alice', 90); students.set('Bob', 80); students.set('Charlie', 70);
接下来,我们定义两个函数来实现成绩排序和查询。sortScores() 函数使用 Array.from() 方法将 Map 对象转换为数组,然后使用数组的 sort() 方法来排序:
function sortScores(students) { let scores = Array.from(students.values()); scores.sort((a, b) => b - a); return scores; }
queryScore() 函数使用 Map 对象的 get() 方法查询给定姓名学生的成绩:
function queryScore(students, name) { return students.get(name); }
现在我们可以使用这两个函数来实现我们的需求:
sortScores(students); // [90, 80, 70] queryScore('Alice'); // 90
总结
Map 集合可以在前端开发中大大简化数据存储与操作。它可以比传统的 Object 对象更灵活地设置键与值对,提供了丰富的方法来检索、更改和删除已存储的数据。在日常项目开发中,我们可以将 Map 集合的灵活性和丰富性应用于数据的存储和操作中,以提高代码质量和开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64af828e48841e9894b917bb