Map的基本使用
console.log('map的基本使用,key可以是任何类型');
console.log('key是基本类型。。。。');
let map=new Map();
map.set('name','only老K');
map.set('age',20);
map.set('结婚',false);
console.log(map);
console.log(map.get('name'));
console.log(map.get('age'));
console.log(map.get('已婚'));
//key是对象
console.log('key是对象...........');
let obj={};//obj对象
map.set(obj,'这个map是对象哦');
console.log(map.get(obj));
//key是函数
console.log('key是函数.......');
let func=function () {};
map.set(func,'这个是函数哦');
console.log(map.get(func));
//key是NaN
console.log('key是NaN.........');
map.set(NaN,'NaN');
console.log(map.get(NaN));
console.log(map.get(Number('aaa')));
Map的迭代
//Map迭代
//for ..of
console.log('Map迭代...........');
let map2=new Map();
map2.set('name','only老K');
map2.set('age',20);
map2.set('已婚',false);
for (let [key,value] of map2){
console.log(key,value)
}
//查询所有value
console.log('查询所有value........')
for (let value of map2.values()){
console.log(value);
}
//forEach方法迭代
console.log('forEach方法迭代........');
map2.forEach(function(value,key){
console.log(key,value)
});
Map对象操作、map与array的相互转换
//Map对象操作
console.log('讲解Map对象操作.....');
//Map与Array转换
//数组转Map
console.log('MapMao对象操作,Map与Array转换,数组转Map.....');
let arr=[['k1','v1'],['k2','v2']];
let map3=new Map(arr);//arr在上面定义Array
map3.forEach(function (value, key) {
console.log(key,value);
});
//Map转数组
console.log('Map转数组........')
let arr2=Array.from(map3);//map3在上面定义了Map集合
console.log(arr2);
//Map合并
console.log('Map合并.......');
let map4=new Map([...map3,...map2]);//都是map集合,然后知道属性多少个使用...
console.log(map4);
Set
//Set对象
//Set里的value值是唯一的
console.log('set对象的唯一性....')
let myMap=new Map();//map
myMap.set('no001','only老K');
myMap.set('no002','only老K1');
myMap.set('no003','only老K');//和上面重复了 但是在Map集合中可以加入
console.log(myMap);
let mySet=new Set();//set
mySet.add('only老K');
mySet.add('only老K1');
mySet.add('only老K');//和上面的重复了 但是在Set集合中不会加入
console.log(mySet);
//遍历
console.log('遍历set集合.......for遍历和foreach遍历');
for (let value of mySet.values()){
console.log(value);
}
mySet.forEach(function (value) {
console.log(value);
})
//Set数组转换
console.log('Set数组转换.......');
//数组转Set
console.log('数组转Set....');
let arr3=[['k1','v1'],['k2','v2']];//定义成了数组
let set3=new Set(arr3);//定义成了Set
console.log(set3);
//set转数组
console.log('set转数组....');
let arr4=[...set3];
console.log(arr4);
//数组去重
console.log('数组去重');
let arr5=[1,2,3,4,5,3,1,2];//定义了数组
let set6=new Set(arr5);//使用的是Set集合Value值不能重复;
let arr6=[...set6];//经过set集合的去重后在放到数组中去
console.log(arr6);
//求并集
console.log('求并集......');
let a=new Set([1,2,3]);
let b=new Set([4,3,2]);
let union=new Set([...a,...b]);//{1,2,3,4}
console.log(union);
//求交集
console.log('求交集.......');
let a2=new Set([1,2,3]);
let b2=new Set([4,3,2]);
let intersect=new Set([...a2].filter(x=>b2.has(x)));//{2,3}
console.log(intersect);
//求差集
console.log('求差集.......');
let a3=new Set([1,2,3]);
let b3=new Set([4,3,2]);
let difference=new Set([...a3].filter(x => !b3.has(x)));//{1} 差集(a3中属于b3的元素去掉)
console.log(difference);
什么是差集
差集(a3中属于b3的元素去掉)
全部代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>es6入门(三)</title>
</head>
<script type="text/javascript">
console.log('map的基本使用,key可以是任何类型');
console.log('key是基本类型。。。。');
let map=new Map();
map.set('name','only老K');
map.set('age',20);
map.set('结婚',false);
console.log(map);
console.log(map.get('name'));
console.log(map.get('age'));
console.log(map.get('已婚'));
//key是对象
console.log('key是对象...........');
let obj={};//obj对象
map.set(obj,'这个map是对象哦');
console.log(map.get(obj));
//key是函数
console.log('key是函数.......');
let func=function () {};
map.set(func,'这个是函数哦');
console.log(map.get(func));
//key是NaN
console.log('key是NaN.........');
map.set(NaN,'NaN');
console.log(map.get(NaN));
console.log(map.get(Number('aaa')));
//Map迭代
//for ..of
console.log('Map迭代...........');
let map2=new Map();
map2.set('name','only老K');
map2.set('age',20);
map2.set('已婚',false);
for (let [key,value] of map2){
console.log(key,value)
}
//查询所有value
console.log('查询所有value........')
for (let value of map2.values()){
console.log(value);
}
//forEach方法迭代
console.log('forEach方法迭代........');
map2.forEach(function(value,key){
console.log(key,value)
});
//Map对象操作
console.log('讲解Map对象操作.....');
//Map与Array转换
//数组转Map
console.log('MapMao对象操作,Map与Array转换,数组转Map.....');
let arr=[['k1','v1'],['k2','v2']];
let map3=new Map(arr);//arr在上面定义Array
map3.forEach(function (value, key) {
console.log(key,value);
});
//Map转数组
console.log('Map转数组........')
let arr2=Array.from(map3);//map3在上面定义了Map集合
console.log(arr2);
//Map合并
console.log('Map合并.......');
let map4=new Map([...map3,...map2]);//都是map集合,然后知道属性多少个使用...
console.log(map4);
//Set对象
//Set里的value值是唯一的
console.log('set对象的唯一性....')
let myMap=new Map();//map
myMap.set('no001','only老K');
myMap.set('no002','only老K1');
myMap.set('no003','only老K');//和上面重复了 但是在Map集合中可以加入
console.log(myMap);
let mySet=new Set();//set
mySet.add('only老K');
mySet.add('only老K1');
mySet.add('only老K');//和上面的重复了 但是在Set集合中不会加入
console.log(mySet);
//遍历
console.log('遍历set集合.......for遍历和foreach遍历');
for (let value of mySet.values()){
console.log(value);
}
mySet.forEach(function (value) {
console.log(value);
})
//Set数组转换
console.log('Set数组转换.......');
//数组转Set
console.log('数组转Set....');
let arr3=[['k1','v1'],['k2','v2']];//定义成了数组
let set3=new Set(arr3);//定义成了Set
console.log(set3);
//set转数组
console.log('set转数组....');
let arr4=[...set3];
console.log(arr4);
//数组去重
console.log('数组去重');
let arr5=[1,2,3,4,5,3,1,2];//定义了数组
let set6=new Set(arr5);//使用的是Set集合Value值不能重复;
let arr6=[...set6];//经过set集合的去重后在放到数组中去
console.log(arr6);
//求并集
console.log('求并集......');
let a=new Set([1,2,3]);
let b=new Set([4,3,2]);
let union=new Set([...a,...b]);//{1,2,3,4}
console.log(union);
//求交集
console.log('求交集.......');
let a2=new Set([1,2,3]);
let b2=new Set([4,3,2]);
let intersect=new Set([...a2].filter(x=>b2.has(x)));//{2,3}
console.log(intersect);
//求差集
console.log('求差集.......');
let a3=new Set([1,2,3]);
let b3=new Set([4,3,2]);
let difference=new Set([...a3].filter(x => !b3.has(x)));//{1} 差集(a3中属于b3的元素去掉)
console.log(difference);
</script>
<body>
</body>
</html>