js 中创建Map的方法

function Map() {

   var struct = function(key, value) {
       this.key = key;
       this.value = value;
   };
 
   var put = function(key, value) {
       for ( var i = 0; i < this.arr.length; i++) {
           if (this.arr[i].key === key) {
               this.arr[i].value = value;
               return;
           }
       }
       this.arr[this.arr.length] = new struct(key, value);
   };
    
 
   var get = function(key) {
       for ( var i = 0; i < this.arr.length; i++) {
           if (this.arr[i].key === key) {
               return this.arr[i].value;
           }
       }
       return null;
   };
 
   var remove = function(key) {
       var v;
       for ( var i = 0; i < this.arr.length; i++) {
           v = this.arr.pop();
           if (v.key === key) {
               continue;
           }
           this.arr.unshift(v);
       }
   };
 
   var size = function() {
       return this.arr.length;
   };
 
   var isEmpty = function() {
       return this.arr.length <= 0;
   };
 
   this.arr = new Array();
   this.get = get;
   this.put = put;
   this.remove = remove;
   this.size = size;
   this.isEmpty = isEmpty;

}




JavaScript 的 `Map` 对象是一个集合数据结构,它存储键值对,并允许使用任何类型的键(例如字符串、数字甚至对象)。与数组相比,Map 的优势在于它的元素是以键值对的形式存储,查找效率更高。 ### Map创建 你可以通过以下几种方式创建一个新的 `Map` 实例: ```javascript // 方式一:使用构造函数直接创建 const map = new Map(); // 方式二:使用字面量语法初始化 Map const map = new Map([ ['key1', 'value1'], ['key2', 'value2'] ]); // 或者用 Object.fromEntries() 将对象转换为 Map const obj = { key1: 'value1', key2: 'value2' }; const mapFromObj = new Map(Object.entries(obj)); ``` ### Map 的常用方法 #### 添加键值对 (`set`) 向 `Map` 添加新项或覆盖已有键的值。 ```javascript map.set('newKey', 'newValue'); ``` #### 获取值 (`get`) 通过键获取对应的值。 ```javascript const value = map.get('newKey'); ``` #### 删除项 (`delete`) 移除指定键及其关联的值。 ```javascript map.delete('newKey'); ``` #### 清空所有内容 (`clear`) 删除所有的键值对。 ```javascript map.clear(); ``` #### 遍历 (`entries`, `keys`, `values`) 遍历 `Map` 内的所有键值对、键或值。 ```javascript for (const [key, value] of map.entries()) { console.log(`${key}: ${value}`); } for (const key of map.keys()) { console.log(key); } for (const value of map.values()) { console.log(value); } ``` #### 检查是否存在某个键 (`has`) 检查 Map 是否包含指定的键。 ```javascript if (map.has('newKey')) { console.log("Key exists."); } ``` #### 查找键的位置 (`ofKeyIndex`) 找到给定键的第一个位置(如果存在),并返回索引。对于不存在的键返回 `-1`。 ```javascript let index = map.indexOf('keyName'); ``` ### 示例 假设我们有一个学生成绩表: ```javascript const grades = new Map(); grades.set('Alice', { math: 85, science: 90 }); grades.set('Bob', { math: 70, science: 75 }); grades.forEach((scores, name) => { console.log(`${name} 的数学成绩: ${scores.math}, 科学成绩: ${scores.science}`); }); ``` ### 相关问题: 1. **如何迭代 Map 并处理每个键值对?** 2. **解释 `Map.of` 和 `Map.entries()` 的区别?** 3. **当需要同时维护键和值的顺序时,Map 应该如何使用?**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值