集合是基本的數學知識,在程式應用中也十分的常見,但是通過js實現集合在網上查了下並不是很多,有些也是使用比較傳統的方法實現,當然不是說傳統的方法有什麼缺點,傳統方法相容性更好
我發現在es6中天然適合做集合的set類,由於set具有元素唯一性,這個特性也正是集合的最基本特性之一,因此能夠用簡潔的**實現類的抽象
類常見的運算有查詢、增加、刪除、合集、並集、差集、子集等等操作,通過set十分方便的實現這些功能,一下是實現簡單集合類的**
/**
* 集合類
*/export default class aggregate
//集合新增
add(newelement)
/*** 集合是否包含
* @param element [description]
* @return [是否包含該元素]
*/has(element)
//集合刪除指定項
remove(element)
//集合清空
clear()
/*** 集合大小,可判斷是否為空集
* @return [集合大小]
*/size()
/*** 集合內容
* @return [集合內容陣列]
*/getvalues()
/*** 並集,兩個集合的所有元素
* @param otherset [目標集合]
* @return [並集]
*/union(otherset)
/*** 交集,共同擁有的元素
* @param otherset [目標集合]
* @return [交集]
*/intersection(otherset)
/*** 差集
* @param otherset [目標集合]
* @return [差集]
*/difference(otherset)
/*** 子集
* @param otherset [目標集合]
* @return [目標集合是否為其子集]
*/issubset(otherset)
/*** 相等
* @param otherset [目標集合]
* @return [與目標集合是否相等]
*/isequal(otherset)
}
以上只是簡單的實現集合類的抽象,以上只是考慮到兩個集合之間的操作,還可以更深度的考慮相容多個集合的操作,比如大於兩個集合的合集等,還有一些沒有實現的集合方法,比如補集等,在此只是簡單地使用set類,集合類也是十分適合set的實踐與學習 js實現集合
集合 不允許重複 es6提出了set資料結構,也就是我們的集合 這裡我們通過物件來模擬集合,適用物件而不使用陣列的原因是因為物件不允許有重複的屬性 是將集合中的值作為物件的鍵來定義 function set 判斷集合中有沒有某乙個值 this.has function val 給集合中新增元素 th...
JS實現Map集合
function map this.put function key,value this.arr this.arr.length new struct key,value this.get function key return null this.values function return v...
集合,Set實現類筆記
回顧 list體系 棧 佇列 陣列 鍊錶 list體系的三個子類 arraylist 資料結構 陣列 vector 資料結構 陣列 特有功能 linkedlist 資料結構 鍊錶 特有功能 first last 面試題 模擬棧結構 泛型 明確資料型別的工作放在建立物件 或者 呼叫方法的時候 型別轉換...