摘要:基礎知識集合是由一組無序且唯一即不能重復的項組成的。還有一個概念叫空集。接下來我們實現對應的方法向集合添加一個新的值刪除集合中的一個值檢測一個值是否在集合中返回清空集合返回集合的數量返回一個包含所有值的數組方法實現首先要實現的是方法。
基礎知識:
集合是由一組無序且唯一(即不能重復)的項組成的。在數學中,集合是一組不同的對象(的集)。比如說,
一個由大于或等于0的整數組成的自然數集合:N= {0, 1, 2, 3, 4, 5, 6, …}。
集合中的對象列表用“{}”(大括號)包圍。還有一個概念叫空集。空集就是不包含任何元素的集合。比如24和29之間的素數集合。由于24和29之間沒有素數(除了1和自身,沒有其他正因數的大于1的自然數),這個集合就是空集。空集用“{ }”表示。你也可以把集合想象成一個既沒有重復元素,也沒有順序概念的數組。在數學中,集合也有并集、交集、差集等基本操。
創建集合首先我們創建骨架如下:
class Set{ constructor(){ this.items={} } }
這里也可以用數組來保存,JS對象具有不允許一個鍵指向兩個不同的屬性,保證了集合里的元素都是唯一的。
接下來我們實現對應的方法:
add(value) :向集合添加一個新的值
delete(value) : 刪除集合中的一個值
has(value) : 檢測一個值是否在集合中 返回 true/false
clear() :清空集合
size() : 返回集合的數量
values() : 返回一個包含所有值的數組
has() 方法實現首先要實現的是has(value)方法。這是因為它會被add、remove等其他方法調用。如下:
class Set{ constructor(){ this.items={} } has(val){ // return val in this.items; return this.items.hasOwnProperty(val) } } let setDemo=new Set(); //false console.log(setDemo.has("demo"))add() 方法
class Set{ constructor(){ this.items={} } has(val){ // return val in this.items; return this.items.hasOwnProperty(val) } add(val){ if(!this.has(val)){ this.items[val]=val; return true; }else{ return false; } } } let setDemo=new Set(); setDemo.add("demo"); // true console.log(setDemo.has("demo"))remove 與 clear
用對象來存儲集合的items對象,就可以簡單地使用delete操作符從items對象中移除屬性
class Set{ constructor(){ this.items={} } has(val){ // return val in this.items; return this.items.hasOwnProperty(val) } add(val){ if(!this.has(val)){ this.items[val]=val; } } remove(val){ if(this.has(val)){ delete this.items[val]; } } clear(){ this.items = {}; } } let setDemo=new Set(); setDemo.add("demo"); setDemo.add("demo1"); setDemo.add("demo2"); console.log(setDemo.has("demo")) setDemo.remove("demo"); console.log(setDemo.has("demo")) console.log(setDemo) setDemo.clear(); console.log(setDemo)
clear效果
class Set{ constructor(){ this.items={} } has(val){ // return val in this.items; return this.items.hasOwnProperty(val) } add(val){ if(!this.has(val)){ this.items[val]=val; } } remove(val){ if(this.has(val)){ delete this.items[val]; } } clear(){ this.items = {}; } size(){ return Object.keys(this.items).length; } } let setDemo=new Set(); setDemo.add("demo"); setDemo.add("demo1"); setDemo.add("demo2"); setDemo.size()values() 方法
class Set{ constructor(){ this.items={} } has(val){ // return val in this.items; return this.items.hasOwnProperty(val) } add(val){ if(!this.has(val)){ this.items[val]=val; } } remove(val){ if(this.has(val)){ delete this.items[val]; } } clear(){ this.items = {}; } size(){ return Object.keys(this.items).length; } values(){ let arr=[]; Object.keys(this.items).forEach(item=>{ arr.push(this.items[item]); }) return arr; } } let setDemo=new Set(); setDemo.add("demo"); setDemo.add("demo1"); setDemo.add("demo2"); setDemo.size(); setDemo.values();
接下來我們來實現 交集 并集 差集 子集
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/104012.html
摘要:原文地址一個框架一個響應式的組件系統,通過把頁面抽象成一個個組件來增加復用性降低復雜性主要特色就是數據操縱視圖變化,一旦數據變化自動更新所有關聯組件所以它的一大特性就是一個數據響應系統,當然有了數據還需要一個模板解析系統即幫我們把數據模板生 原文地址:https://gmiam.com/post/evo.html Vue 一個 MVVM 框架、一個響應式的組件系統,通過把頁面抽象成一個...
摘要:中的事件的一個,我暫且理解為一個中的和這兩個屬性已經在框架中直接掛載在了對象上,歸功于曾老師。 CQRS是啥?DDD又是啥? 這兩個概念其實沒什么神秘的,當然此文章中的這兩個概念以曾老師的課程為準(關于CQRS和DDD的標準概念,google上已經很多了,不再贅述。) DDD(Domain Driven Design),領域驅動設計開發。 DDD和OOP有什么同嗎?其實就我個人經驗來說...
摘要:過濾掉和簡單判斷是否是迭代器對象模擬行為對迭代器對象進行遍歷操作。看到這里你可能已經知道了,要實現的功能之一就是提供一個迭代器。原文鏈接參考迭代器和生成器系列之模擬實現一個數據結構展開語法循環 前言 es6新增了Set數據結構,它允許你存儲任何類型的唯一值,無論是原始值還是對象引用。這篇文章希望通過模擬實現一個Set來增加對它的理解。 原文鏈接 用在前面 實際工作和學習過程中,你可能也...
閱讀 928·2021-11-22 13:54
閱讀 2860·2021-09-28 09:36
閱讀 2994·2019-08-30 15:55
閱讀 1961·2019-08-30 15:44
閱讀 557·2019-08-29 12:31
閱讀 2574·2019-08-28 18:18
閱讀 1211·2019-08-26 13:58
閱讀 1397·2019-08-26 13:44