国产探花免费观看_亚洲丰满少妇自慰呻吟_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 ,這樣就可以明確告訴我們是否正確的插入了一個元素。

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

圖片精選

主站蜘蛛池模板: 东兴市| 黑河市| 牟定县| 当涂县| 景宁| 香港| 富裕县| 珠海市| 山西省| 石门县| 东阿县| 九江县| 闽侯县| 台南市| 祁门县| 武威市| 淮安市| 吴忠市| 江孜县| 平塘县| 昌宁县| 华坪县| 耒阳市| 大冶市| 乐业县| 铁岭市| 元江| 蓬溪县| 荆门市| 家居| 临颍县| 闸北区| 永德县| 外汇| 宝山区| 锡林郭勒盟| 屯昌县| 黄冈市| 中阳县| 西乌珠穆沁旗| 菏泽市|