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("()[]{}"));
1106

被折叠的 条评论
为什么被折叠?



