?set ? 集合中的元素不能重復(fù)
map ?key可以使任意的類型
//? set 新增數(shù)據(jù) add ,獲取長(zhǎng)度 size
{
? ? ? let ?list ?= new Set();
? ? ? list.add(5);
? ? ? list.add(7);
? ? ? console.log( list ) ; ?//? {5, 7}
? ? ? console.log("size--" + list.size); ?//? 2
}
{
? ? ? let ?arr = ?[1, 2, 3, 4, 5, 6];
? ? ? let ?list ?= ?new ?Set( arr );
? ? ? console.log("size--" + list.size);//? 6
}
//不能添加重復(fù)元素,重復(fù)元素不會(huì)添加成功;可以實(shí)現(xiàn)去重
{
? ? ? let ?list ?= ?new ?Set();
? ? ? list.add(1);
? ? ?list.add(2);
? ? ?list.add(1);
? ? ?console.log( list ); ?//? {1, 2}
? ? ?console.log("size--" + list.size);//? 2
? ? ?let ?arr ?= ? [ 1, 2, 3, 1, 3];
? ? ?let ?list2 = new ?Set(arr);
? ? ?console.log(list2); ?//? {1, 2, 3}
? ? ?console.log("size--" ?+ ?list2.size ); ?//? 3
}
{
? ? ? ?let ?arr ?= [ 'add', 'delete', 'clear', 'has'];
? ? ? ?let ?list ?= ?new ?Set(arr);
? ? ? //查看包含元素
? ? ? console.log( list.has('add')); ?//? true
? ? ? // 刪除
? ? ? list.delete('add');
? ? ? console.log(list); ?//? {"delete", "clear", "has"}
? ? ? // 清空
? ? ? list.clear();
? ? ? console.log(list); ?//? {}
}
{
? ? ? ?let ?arr ?= ?['add', ?'delete', ?'clear', ?'has'];
? ? ? ?let ?list ?= ?new ?Set(arr);
? ? ? // 遍歷讀取
? ? ? for(let ?key ?of ?list.keys()){
? ? ? ? ? ? ?console.log(key); //? add? delete? ? clear? has
? ? ? }
? ? ? for( let ?values ?of ?list.values()){
? ? ? ? ? ? console.log(values); ?//? add? delete? ? clear? has
? ? ? }
? ? ?for(let ?value ?of ?list){
? ? ? ? ? ?console.log(value); ?//? add? delete? ? clear? has
? ? ?}
? ? ?for(let ?[key,value] ? of ?list.entries()){
? ? ? ? ? ?console.log(key,value); ?//? add? delete? ? clear? has
? ? ?}
? ? ?list.forEach( function(item){
? ? ? ? ? console.log(item); ?//? add? delete? ? clear? has
? ? ?})
}
//WeakSet與set的區(qū)別:
// 1.支持的數(shù)據(jù)類型不一樣,WeakSet只能是對(duì)象,2
// 2.對(duì)象都是弱引用,只是引用了該數(shù)據(jù)的地址,并且不會(huì)檢測(cè)改地址是否被垃圾回收機(jī)制回收掉
//3.沒有clear方法
//4.沒有size屬性
//5.不能遍歷
{
? ? ? ? let ?weakList ?= ?new ?WeakSet();
? ? ? ? let ?arg ?= {};
? ? ? ?weakList.add(arg);
? ? ? ?// weakList.add(2); // 報(bào)錯(cuò),不支持除對(duì)象外的數(shù)據(jù)
? ? ? ?console.log(weakList);
}
//Map
{
? ? ? ?//第一種定義方法
? ? ? let ?map ?= ?new ?Map();
? ? ? let arr = ?['123','111'];
? ? ? map.set(arr,456);
? ? ? console.log(map);//? {["123", "111"] => 456}
? ? ? //根據(jù)key值獲取value
? ? ? console.log(map.get(arr));//? 456
? ? ? //第二種定義方法
? ? ? let ?map2 ?= ?new ?Map( [ [ 'a' , '111' ] , ?[ 'b' ,'222' ] ] );
? ? ? console.log(map2); ?//? { "a" ?=> "111", "b" => "222"}
? ? ? //長(zhǎng)度值
? ? ? console.log( map2.size );
? ? ? //刪除
? ? ? console.log( map2.delete('a'), ?map2); ?// true? {"b" => "222"}
? ? ? console.log( map2.clear(), ?map2); ?// undefined? {}
}
//WeakMap與Map的區(qū)別:
// 1.支持的數(shù)據(jù)類型不一樣,WeakMap只能是對(duì)象
// 2.對(duì)象都是弱引用,只是引用了該數(shù)據(jù)的地址,并且不會(huì)檢測(cè)改地址是否被垃圾回收機(jī)制回收掉
//3.沒有clear方法
//4.沒有size屬性
//5.不能遍歷