size00.参考网站
01.用途
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
02.map和objects的区别
- 一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。
- Map 中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。
- Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。
- Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。
03.Map 实例的属性和方法
- size:获取成员的数量
- set:设置成员 key 和 value
- get:获取成员属性值
- has:判断成员是否存在
- delete:删除成员
- clear:清空所有
const map = new Map();
map.set('aaa', 100);//设置成员 key 和 value
map.set('bbb', 200);
map.size // 2 获取成员的数量
map.get('aaa') // 100 获取成员属性值
map.has('aaa') // true 判断成员是否存在
map.delete('aaa') 删除成员
map.has('aaa') // false
map.clear()
04.Map 实例的遍历方法
keys():返回键名的遍历器。
values():返回键值的遍历器。
entries():返回所有成员的遍历器。
forEach():遍历 Map 的所有成员。 ```javascript const map = new Map(); map.set(‘aaa’, 100); map.set(‘bbb’, 200);
for (let key of map.keys()) { console.log(key); } // “aaa” // “bbb”
for (let value of map.values()) { console.log(value); } // 100 // 200
for (let item of map.entries()) { console.log(item[0], item[1]); } // aaa 100 //…
<a name="83886eff"></a>
# 05 leetcode例题
```css
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6
输出:[0,1]
题解 通俗理解 走到哪匹配到哪里
1. 解题思路
把nums想象成相亲者
把target想象成匹配条件
用字典建立一个婚姻介绍所,存储相亲者的数字和下标
解题步骤:
新建一个字典作为婚姻介绍所
nums里的值,逐个来介绍所找对象,没有合适的就先登记着,有合适的就牵手成功
2. 代码实现
var twoSum = function(nums, target) {
const map = new Map()
for(let i = 0; i < nums.length; i+=1) {
const n = nums[i]
const n2 = target - n
if(map.has(n2)) {
return [map.get(n2), i]
} else {
map.set(n, i)
}
}
};
3. 复杂度分析
时间复杂度O(n), 空间复杂度O(n)