中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

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

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

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

網(wǎng)上的相關教程非常多,基礎知識自行搜索即可。

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

參考代碼可見:https://github.com/dashnowords/blogs/tree/master/Structure/Set

[TOC]

集合的基本知識

  • 定義:

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

基本練習

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

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

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

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

union(cSetInstance)- 求并集

intersect(cSetInstance)求交集

difference(cSetInstance)求差集

show( )-顯示集合成員

課后習題(書中第九節(jié)習題)

1.修改Set類,使得里面的元素按順序存儲,并寫一段代碼測試該修改。

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

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

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

習題思路

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

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

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

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

ES6新特性

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

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

1.數(shù)組去重

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

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

2.集合遍歷

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

3.數(shù)學特性

原生Set類并沒有定義集合的數(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的成員變量只能是對象,被放入其中的對象都是弱引用,在其他引用都解除后,垃圾回收機制不會考慮WeakSet對該對象的持有。上面的教程中提到WeakMap的主要用途是用于DOM節(jié)點的存儲,防止DOM節(jié)點移除后造成內(nèi)存泄漏?;A知識可以參考這篇博文《Javascript中4種常見的內(nèi)存泄漏陷阱》。

5.WeakMap

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

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

網(wǎng)頁標題:野生前端的數(shù)據(jù)結(jié)構(gòu)基礎練習(6)——集合-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://www.rwnh.cn/article30/dcicso.html

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

廣告

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

成都做網(wǎng)站
荔波县| 静宁县| 天门市| 东城区| 武功县| 长白| 新闻| 微山县| 宾川县| 林州市| 龙岩市| 青川县| 临武县| 陇西县| 福州市| 山丹县| 海盐县| 徐水县| 抚远县| 疏附县| 内江市| 绥棱县| 崇州市| 亚东县| 漳州市| 志丹县| 尚志市| 三明市| 乌兰浩特市| 张掖市| 正蓝旗| 富蕴县| 剑川县| 闻喜县| 马关县| 舟曲县| 将乐县| 乌恰县| 兴仁县| 巴林右旗| 海南省|