js:資料結構筆記8--集合

來源:互聯網
上載者:User

標籤:blog   http   io   os   ar   java   for   strong   sp   

集合:唯一性,無序性;

基本結構:

 function Set () {   this.dataStore = [];   this.add = add;   this.remove = remove;   this.contains =contains;   this.show = show;  } function contains(data) {  var pos = this.dataStore.indexOf(data);  if(pos > -1) {    return true;  } else {    return false;  } } function add(data) {   var pos = this.dataStore.indexOf(data);   if( pos < 0) {     this.dataStore.push(data);     return true;   } else {     return false;   } } function remove(data) {   var pos = this.dataStore.indexOf(data);   if(pos > -1) {     this.dataStore.splice(pos,1);     return true;   } else {     return false;   } } function show() {   console.log(this.dataStore); }

操作:demo

 集合的基本操作:並集,交集,補集;

並集:

新增: function union(set) {    var tempSet = new Set();    for(var i = 0; i < this.dataStore.length; ++i) {      tempSet.add(this.dataStore[i]);    }    for(var i = 0; i < set.dataStore.length; ++i) {      var setData = set.dataStore[i];      if(!tempSet.contains(setData)) {        tempSet.dataStore.push(setData);      }    }    return tempSet; }

操作: demo;

交集:

新增: function intersect(set) {  var tempSet = new Set();  for(var i = 0; i < this.dataStore.length; ++i) {    var thisData = this.dataStore[i];    if(set.contains(thisData)) {      tempSet.add(thisData);    }  }  return tempSet; }

操作: demo;

 補集:

新增: function difference(set) {  var tempSet = new Set();  for(var i = 0; i < this.dataStore.length; ++i) {    var thisData = this.dataStore[i];    if(!set.contains(thisData)) {      tempSet.add(thisData);    }  }  return tempSet; }

父集判斷:

新增: function size() {  return this.dataStore.length; } function subset(set) {   if(this.size() > set.size()) {      return false;   } else {    for(var i = 0; i < this.dataStore.length; ++i) {      var thisData = this.dataStore[i];      if(!set.contains(thisData)) {        return false;      }    }   }   return true; }

 操作:demo

 

js:資料結構筆記8--集合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.