版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/q95548854/article/details/79082762
四、数据集合-map
·类似于对象,以键值对方式存储
·不同点:对象中键只能是字符串,map中可以为对象
//在对象中,键如果为一个对象,会直接将这个对象toString(),都会变成"[object Object]"字符串,所以"大海"能替换"天空"
let obj1 = {a: 1}, obj2 = {b: 2}, obj = {};
obj.name = '张三';
obj[obj1] = '天空';
obj[obj2] = '大海';
console.log(obj); // {[object Object]:"大海, "name:"张三"}
console.log(obj1.toString()); // [object Object]
console.log(obj2.toString()); // [object Object]
console.log(obj1.toString() === obj2.toString()); // true
//在map中,对象可以作为键
let obj1 = {a: 1}, obj2 = {b: 2};
const map = new Map([
['name', '张三'],
[obj1, '今天天气很好'],
[obj2, '适合敲代码'],
[[1,2], 'hhh']
]);
console.log(map); // Map(4) {"name" => "张三", {a: 1} => "今天天气很好", {b: 2} => "适合敲代码", Array(2) => "hhh"}
console.log(map.size); // 4
1.set和get
map.set('friends', ['赵六', '李七']).set(['dog'], '小花');
console.log(map);
console.log(map.get('name')); // 张三
console.log(map.get(obj1)); // 今天天气很好
2.delete(返回boolean值)
map.delete(obj1);
3.has(返回boolean值)
console.log(map.has(obj2));
4.clear-清空
map.clear();
console.log(map);
5.keys()-所有键 values()-所有值 entries()-所有键值
console.log(map.keys());
console.log(map.values());
console.log(map.entries());
6.遍历
map.forEach(function (value, index) {
console.log(index + ':' + value);
})
7.注意事项-两个对象永不相等
map.set({}, '呵呵呵呵呵');
map.set({}, '哈哈哈哈');
console.log(map); // 上面两个都加入进去了
console.log({} === {}); // false