欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

野生前端的數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)練習(xí)(6)——集合-創(chuàng)新互聯(lián)

野生前端的數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)練習(xí)(6)——集合

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括朝陽(yáng)縣網(wǎng)站建設(shè)、朝陽(yáng)縣網(wǎng)站制作、朝陽(yáng)縣網(wǎng)頁(yè)制作以及朝陽(yáng)縣網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,朝陽(yáng)縣網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到朝陽(yáng)縣省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!

網(wǎng)上的相關(guān)教程非常多,基礎(chǔ)知識(shí)自行搜索即可。

習(xí)題主要選自O(shè)relly出版的《數(shù)據(jù)結(jié)構(gòu)與算法javascript描述》一書(shū)。

參考代碼可見(jiàn):https://github.com/dashnowords/blogs/tree/master/Structure/Set

[TOC]

集合的基本知識(shí)

  • 定義:

    集合Set是一種不包含不同元素的數(shù)據(jù)結(jié)構(gòu),主要特性包括無(wú)序性和單一性,即集合中的成員是無(wú)序的,同時(shí)也是不重復(fù)的。

基本練習(xí)

實(shí)現(xiàn)一個(gè)自定義的cSet類(lèi)(避免與原生的Set類(lèi)沖突),包含以下方法:

dataStore-類(lèi)屬性,用于存儲(chǔ)集合中的成員,用數(shù)組實(shí)現(xiàn)即可。

add(value)- 向集合中加入成員。

remove(value)- 從集合中移除成員。

union(cSetInstance)- 求并集

intersect(cSetInstance)求交集

difference(cSetInstance)求差集

show( )-顯示集合成員

課后習(xí)題(書(shū)中第九節(jié)習(xí)題)

1.修改Set類(lèi),使得里面的元素按順序存儲(chǔ),并寫(xiě)一段代碼測(cè)試該修改。

2.修改Set類(lèi),將存儲(chǔ)方式從數(shù)組替換為鏈表,并寫(xiě)一段代碼測(cè)試該修改。

3.為Set類(lèi)增加一個(gè)higher(element)方法,該方法返回比傳入元素大的元素中最小的一個(gè),并寫(xiě)一段代碼來(lái)測(cè)試該功能。

4.為Set類(lèi)增加一個(gè)lower(element)方法,該方法返回比傳入元素小的元素中大的一個(gè),并寫(xiě)一段代碼來(lái)測(cè)試該功能。

習(xí)題思路

1.add(value)方法中檢測(cè)完重復(fù)性后,使用插入排序算法和splice(i,0,value)方法將成員直接插入正確位置。

2.將前述章節(jié)中實(shí)現(xiàn)的List.js類(lèi)引入,使用一個(gè)新的類(lèi)繼承Set類(lèi)并復(fù)寫(xiě)其構(gòu)造函數(shù)及相關(guān)方法即可。

3.習(xí)題1中已經(jīng)實(shí)現(xiàn)了插入排序,higher(element)只需要在Set中找到element應(yīng)該插入的位置,該位置后一個(gè)元素即滿(mǎn)足查找條件。

4.思路同上,不再贅述。

ES6新特性

阮一峰的ES6教程:http://es6.ruanyifeng.com/#docs/set-map

ES6中原生實(shí)現(xiàn)了Set,Map,WeakSet,WeakMap跟集合相關(guān)的類(lèi)型,和數(shù)據(jù)結(jié)構(gòu)中的集合不完全一致,數(shù)據(jù)結(jié)構(gòu)中的集合主要是一種數(shù)學(xué)概念的表現(xiàn),而ES6中的集合擁有一些針對(duì)特定問(wèn)題的開(kāi)發(fā)相關(guān)的特性。

1.數(shù)組去重

借助集合可以實(shí)現(xiàn)js中最簡(jiǎn)潔的數(shù)組去重方式:

//實(shí)現(xiàn)了Iterable接口的數(shù)據(jù)結(jié)構(gòu)都可以作為初始化Set的參數(shù)
cosnt uniqueArr = [...new Set(arr)];

2.集合遍歷

keys(),values(),entries()方法分別返回不同類(lèi)型的遍歷器,可供for...of循環(huán)結(jié)構(gòu)消費(fèi)。

3.數(shù)學(xué)特性

原生Set類(lèi)并沒(méi)有定義集合的數(shù)學(xué)運(yùn)算操作方法,因?yàn)榭梢院芊奖愕闹苯訉?shí)現(xiàn):

//并集
let union = new Set([...a,...b]);
//交集
let intersect = new Set([...a].filter(x=>b.has(a)));
//差集
let difference = new Set([...a].filter(x=>!b.has(a)));

4.WeakSet

WeakSet的成員變量只能是對(duì)象,被放入其中的對(duì)象都是弱引用,在其他引用都解除后,垃圾回收機(jī)制不會(huì)考慮WeakSet對(duì)該對(duì)象的持有。上面的教程中提到WeakMap的主要用途是用于DOM節(jié)點(diǎn)的存儲(chǔ),防止DOM節(jié)點(diǎn)移除后造成內(nèi)存泄漏。基礎(chǔ)知識(shí)可以參考這篇博文《Javascript中4種常見(jiàn)的內(nèi)存泄漏陷阱》。

5.WeakMap

WeakMap的設(shè)計(jì)目的,在于當(dāng)在某個(gè)DOM對(duì)象上存放一些數(shù)據(jù)時(shí),會(huì)形成對(duì)這個(gè)對(duì)象的引用,影響垃圾回收機(jī)制,典型應(yīng)用場(chǎng)景是在DOM元素上添加數(shù)據(jù),當(dāng)DOM元素被清除時(shí),對(duì)應(yīng)的WeakMap記錄也會(huì)被自動(dòng)清除。

創(chuàng)新互聯(lián)www.cdcxhl.cn,專(zhuān)業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買(mǎi)多久送多久。

網(wǎng)頁(yè)標(biāo)題:野生前端的數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)練習(xí)(6)——集合-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://chinadenli.net/article30/dcicso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷(xiāo)推廣、企業(yè)網(wǎng)站制作定制網(wǎng)站、網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站