国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS中的算法與數據結構之集合(Set)實例詳解

2024-05-06 15:35:43
字體:
來源:轉載
供稿:網友

本文實例講述了JS中的算法與數據結構之集合(Set)。分享給大家供大家參考,具體如下:

集合(Set)

同數學中所學的一樣,集合(Set)是由一組無序但彼此之間又有一定關系性的成員構成,每個成員在集合中只能出現一次,不同于我們之前說的字典,鏈表之類的,它是一種包含了不同元素的數據結構(集合中的元素稱為成員),從其定義中我們可以看出它具有兩個很重要的特征:首先,集合中的成員是無序的,其次,集合中的成員是不相同的,即集合中不存在相同的成員。

實際上,很多編程語言中,集合并不是一種數據類型,但是如果你需要創建一個數據結構用來保存一些獨一無二的元素時,集合就變得很有用了,接下來我們一起來看看JS中如何實現一個集合。

集合的定義

我們要實現一個集合,首先要對其一些定義做了解

不包含任何成員的集合稱為空集,包含一切可能成員的集合稱為全集。 如果兩個集合里的成員都完全相同,則稱兩個集合相等。 如果一個集合所有成員都包含于另一個集合,則前一集合稱為后一集合的一個子集。

集合的操作

通常來說,集合的基本操作有以下三種:

并集:將兩個集合中的成員進行合并,得到一個新的集合 交集:將兩個集合中共同存在的成員組成的一個新的集合 補集:屬于一個集合而不屬于另一個集合的成員組成的新的集合

集合的實現

集合(Set)的實現我們這里基于數組,用數組來存儲數據,根據我們之前學習的以及上面提到的一些方法,我們可以將集合的構造函數定義如下(為了區別ES6的 set 類型,我們這里選擇用 MySet 命名):

//構造函數function MySet () {  this.dataStore = [];      // 數據存儲  this.add = add;         // 添加成員  this.remove = remove;      // 刪除成員  this.size = size;        // 集合元素個數  this.union = union;       // 集合求并集  this.intersect = intersect;   // 集合求交集  this.subset = subset;      // 判斷一個集合是否是另一集合的子集  this.difference = difference;  // 集合求補集  this.contains = contains;    // 判斷某成員是否屬于該集合  this.show = show;        // 顯示當前集合}

我們第一個要實現的方法就是向集合中添加一個成員,即 add 方法

add:向集合中添加一個成員

//添加元素function add (data) {  //判斷元素是否存在集合當中  if( this.dataStore.indexOf( data ) < 0 ){    this.dataStore.push(data);    return true;  }else{    console.warn( 'Can not add ' + data + ', must already be in set');    return false;  }}

我們之前提到,集合中的元素是獨一無二的,因此,我們在將數據存儲到數組之前,首先就是要確保該集合不存在該數據,因此,我們先用 indexOf 方法檢查新加入的元素是否存在,如果找到了就返回該成員在數組中的位置;否則,就返回 -1 ,那么對應的 add 方法就可以定義返回布爾值,添加成功我們返回 true , 否則返回 false ,這樣就可以明確告訴我們是否正確的插入了一個元素。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 宜春市| 呼伦贝尔市| 南开区| 和硕县| 荥阳市| 福安市| 遂宁市| 张北县| 西乌珠穆沁旗| 全椒县| 临武县| 宜兰市| 湘潭县| 措勤县| 上林县| 全南县| 安塞县| 安仁县| 海口市| 沽源县| 桐城市| 延安市| 元朗区| 五原县| 呼玛县| 新干县| 宁武县| 怀安县| 通海县| 井研县| 霍邱县| 抚顺市| 和田市| 雅安市| 怀集县| 朝阳区| 呼伦贝尔市| 沾化县| 治县。| 平远县| 清水河县|