Map方法详解以及使用

Map 是 ES6 中引入的一种新的数据结构,可以参考 ES6 Map 与 Set

创建map

let myMap = new Map();

Map 相关的函数与属性:

    // 创建

    let nameSiteMapping = new Map();

    // 设置 Map 对象

    nameSiteMapping.set("Google", 1);

    nameSiteMapping.set("Runoob", 2);

    nameSiteMapping.set("Taobao", 3);

    // 获取键对应的值

    console.log(nameSiteMapping.get("Google"));     // 1

    console.log(nameSiteMapping.get("Runoob"));     // 2

    console.log(nameSiteMapping.get("Taobao"));     // 3

    // 判断 Map 中是否包含键对应的值

    console.log(nameSiteMapping.has("Taobao"));       // true

    console.log(nameSiteMapping.has("Zhihu"));        // false

    // 返回 Map 对象键/值对的数量

    console.log(nameSiteMapping.size);  

   

    // 返回Map对象中每个元素的值

    console.log(nameSiteMapping.values());// {1 , 2 , 3}

    // 返回Map对象中每个元素的键

    console.log(nameSiteMapping.keys());// {'Google', 'Runoob', 'Taobao'}

    // 删除 Runoob

    console.log(nameSiteMapping.delete("Runoob"));    // true

    console.log(nameSiteMapping);

    // 移除 Map 对象的所有键/值对

    nameSiteMapping.clear();             // 清除 Map

    console.log(nameSiteMapping);

应用:(LeetCode)

解题:   

function twoSum(nums, target) {

        const map = new Map()

        for (var i = 0; i < nums.length; i++) {

            const n = nums[i]

            const n2 = target - n

            // 判断map是否有n2

            if (map.has(n2)) {

                // 有则读取n2对应的值

                return [map.get(n2), i]

            }

            // 没有则设置键n的值为i

            map.set(n, i)

        }

    }

    twoSum([2, 7, 11, 15], 9)

  

function twoSum(nums, nums2) {

        const map = new Map()

        for (var i = 0; i < nums.length; i++) {

            const n = nums[i]

            // 值设置为true

            map.set(n, true)

        }

        const res = []

        for(var j = 0;j<nums2.length;j++){

            const n2 = nums2[j]

            // 读取到对应的值 则添加到res

            if(map.get(n2)){

                res.push(n2)

            }

        }

        return res

    }

    console.log(twoSum([2, 3, 7, 11, 15], [2, 3, 5, 7]))

    function isValid(s) {

        if (s.length % 2 === 1) { return false }

        const stack = []

        const map = new Map()

        map.set('(', ')')

        map.set('{', '}')

        map.set('[', ']')

        for (let i = 0; i < s.length; i++) {

            const c = s[i]

            if (c === '{' || c === '(' || c === '[') {

                // 匹配到左括号添加到stack

                stack.push(c)

            } else {

                // 匹配到右括号 找到上一个未匹配的左括号

                const t = stack[stack.length - 1]

                if (map.get(t) === c) {

                    stack.pop();

                } else {

                    return false;

                }

            }

            return true

        }

    }

    console.log(isValid("()[]{}"));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吞掉星星的鲸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值