JavaScript ES6 中Map结构的使用

简介: JavaScript ES6 中Map结构的使用

Map结构



声明


const person = new Map();


添加元素


 person.set("name" , "小明" );
 person.set("age", 18);
 person.set("hobby", ["看电影" , "看书" , "玩手机"]);
 person.set("age", 23);
 //如果 Map里面没有这个key值,会直接添加,如果有这个key值,会用新的值来更新旧的值,18被更新为23


获取元素


person.get("hobby");
 //得到["看电影" , "看书" , "玩手机"]这个数组


元素个数


person.size;
 // 3


判断Map有无某个key值


person.has("age");
 //返回true


删除元素


person.delete("age");
 //如果有这个元素,删除后返回true,否则返回false


遍历Map结构


 for(const i of person.values()) //遍历得到数值
 for(const i of person.keys()) //遍历得到key值
 for(const i of person.entries()) //得到key和value值


LeetCode可以用到Map的题目



LeetCode 1. 两数之和

LeetCode 3. 无重复字符的最长子串

LeetCode 49. 字母异位词分组

LeetCode 242. 有效的字母异位词


1.两数之和


 var twoSum = function(nums, target) {
     let map = new Map();
     for(let i = 0 ; i < nums.length ; i++){
         if(map.has(target-nums[i])){
             return [map.get(target-nums[i]),i];//get得到value值
         }
        else map.set(nums[i],i);
     }
     return [];
 };


3.无重复字符的最长子串

 //其实应该用set结构的
 var lengthOfLongestSubstring = function(s) {
     let map = new Map();
     let res = 0;
     for(let i = 0, j = 0; i < s.length ;i++) {
        if(!map.has(s[i])) {
             map.set(s[i]);
             res = Math.max(res ,map.size);
         }else {
             while(map.has(s[i])) {
                 map.delete(s[j++]);
             }
             map.set(s[i]);
         }
     }
     return res;
 };


  1. 字母异位词分组
 var groupAnagrams = function(strs) {
    let map = new Map();
    for(let i of strs) {
        let key = i.split('').sort().join();
        if(map.has(key)) {
            map.get(key).push(i);
        } else {
            map.set(key ,[i]);
        }
    }
    return Array.from(map.values());
};


  1. 有效的字母异位词
 var isAnagram = function(s, t) {
    if(s.length != t.length) return false;
    let hashs = new Map();
    let hasht = new Map();
    for(let i = 0 ;i < s.length ;i++) {
        if(hashs.has(s[i])) hashs.set(s[i],hashs.get(s[i]) + 1);
        else hashs.set(s[i],1);
        if(hasht.has(t[i])) hasht.set(t[i],hasht.get(t[i])+1);
        else hasht.set(t[i],1);
    }
    for(let key of hashs.keys()){
        if(!hasht.has(key)||hasht.get(key)!=hashs.get(key)) return false;
    }
    return true;    
};


目录
相关文章
|
3月前
|
前端开发 JavaScript
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
|
1月前
|
JavaScript 前端开发 安全
ECMAScript 6(以下简称 ES6)的出现为 JavaScript 带来了许多新的特性和改进,其中 let 和 const 是两个非常重要的关键字。
ES6 引入了 `let` 和 `const` 关键字,为 JavaScript 的变量管理带来了革新。`let` 提供了块级作用域和暂存死区特性,避免变量污染,增强代码可读性和安全性;`const` 用于声明不可重新赋值的常量,但允许对象和数组的内部修改。两者在循环、函数内部及复杂项目中广泛应用,有助于实现不可变数据结构,提升代码质量。
26 5
|
1月前
|
存储 JavaScript 前端开发
JS的ES6知识点
【10月更文挑战第19天】这只是 ES6 的一些主要知识点,ES6 还带来了许多其他的特性和改进,这些特性使得 JavaScript 更加现代化和强大,为开发者提供了更多的便利和灵活性。
25 3
|
2月前
|
JavaScript 前端开发 索引
JavaScript ES6及后续版本:新增的常用特性与亮点解析
JavaScript ES6及后续版本:新增的常用特性与亮点解析
57 4
|
3月前
ES6中map对象的使用,确实比Object好使哈
ES6中Map对象的使用优势,包括任意类型作为键、直接获取大小、增删查改操作等。Map的键可以是函数、对象、NaN等,支持forEach循环和for...of循环。
37 1
ES6中map对象的使用,确实比Object好使哈
|
2月前
|
自然语言处理 JavaScript 前端开发
JavaScript高级——ES6基础入门
JavaScript高级——ES6基础入门
32 1
|
1月前
|
前端开发 JavaScript
JavaScript新纪元:ES6+特性深度解析与实战应用
【10月更文挑战第29天】本文深入解析ES6+的核心特性,包括箭头函数、模板字符串、解构赋值、Promise、模块化和类等,结合实战应用,展示如何利用这些新特性编写更加高效和优雅的代码。
45 0
|
2月前
|
前端开发 JavaScript 小程序
JavaScript的ES6中Promise的使用以及个人理解
JavaScript的ES6中Promise的使用以及个人理解
23 1
|
3月前
|
JavaScript 前端开发 Oracle
软件工程师,学习下JavaScript ES6新特性吧
软件工程师,学习下JavaScript ES6新特性吧
47 9
|
3月前
|
存储 JavaScript 前端开发
js的map和set |21
js的map和set |21
下一篇
DataWorks