es6 set-map數(shù)據(jù)結(jié)構(gòu)

?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.不能遍歷

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、Set 1.1概念:ES6提供了新的數(shù)據(jù)結(jié)構(gòu)Set,它類似數(shù)組,但是成員的值都是唯一的。 eg:const s...
    Kris_lee閱讀 2,613評(píng)論 0 3
  • 1.數(shù)據(jù)結(jié)構(gòu) Set的用法可以當(dāng)成數(shù)組來(lái)理解,一種集合;set集合中的元素是不能重復(fù)的;(Set這個(gè)特性可以做去重...
    飛菲fly閱讀 358評(píng)論 0 0
  • let ,const, varvar :沒有作用域一說(shuō),且存在作用域提升的問題let const: 只能在當(dāng)前作用...
    壹點(diǎn)微塵閱讀 550評(píng)論 0 1
  • ES6 箭頭函數(shù)、函數(shù)擴(kuò)展 ES5: function add(a,b){return a+b;}console....
    紫由裊閱讀 401評(píng)論 0 1
  • 如你看到的封面“解決拖延帶來(lái)的問題,抓住時(shí)間帶來(lái)的機(jī)遇”,打開這本書時(shí),我也抱著這樣的心態(tài):反正就是一本干貨,皆大...
    樹海云天閱讀 346評(píng)論 7 2

友情鏈接更多精彩內(nèi)容