集合中的元素:无序,不能重复
集合类似于set
//封装set
function Set(){
this.items = {}
//查找
Set.prototype.has = function(value){
return this.items.hasOwnProperty(value);
}
//添加
Set.prototype.add= function(value){
if(this.has(value)) return false;
this.items[value] =value;
}
//删除
Set.prototype.del = function (value) {
if(!this.has(value)) return false;
delete this.items[value];
}
//清空集合
Set.prototype.clear = function(){
this.items ={}
}
//集合长度
Set.prototype.size = function () {
return Object.keys(this.items).length
}
//获取集合中元素的值
Set.prototype.getValue = function () {
return Object.values(this.items);
}
}
let set = new Set();
set.add('aaa');
set.add('bbb');
console.log(set);//Set { items: { aaa: 'aaa', bbb: 'bbb' } }
console.log(set.has('aaa'));//true
console.log(set.size());//2
console.log(set.getValue());//[ 'aaa', 'bbb' ]
集合并集
将两个集合中,不重复的元素添加到一个新的集合中
//封装set
function Set(){
this.items = {}
//查找
Set.prototype.has = function(value){
return this.items.hasOwnProperty(value);
}
//添加
Set.prototype.add= function(value){
if(this.has(value)) return false;
this.items[value] =value;
}
//删除
Set.prototype.del = function (value) {
if(!this.has(value)) return false;
delete this.items[value];
}
//清空集合
Set.prototype.clear = function(){
this.items ={}
}
//集合长度
Set.prototype.size = function () {
return Object.keys(this.items).length
}
//获取集合中元素的值
Set.prototype.getValue = function () {
return Object.values(this.items);
}
/*
并集:将两个集合中的元素添加到一个新集合中
*/
Set.prototype.unionSet = function (setB) {
let newSet = new Set();
let values = this.getValue();//获取集合A中所有属性值
for(let i=0;i<values.length;i++){
newSet.add(values[i]);
}
values = setB.getValue();//获取集合B中value
for(let i=0;i<values.length;i++){
newSet.add(values[i]);
}
return newSet;
}
}
let set = new Set();
set.add('aaa');
set.add('bbb');
set.add('ccc');
let setB = new Set();
setB.add('aaa');
setB.add('ddd');
setB.add('eee');
console.log(set.unionSet(setB));
/*
Set {
items:
{ aaa: 'aaa', bbb: 'bbb', ccc: 'ccc', ddd: 'ddd', eee: 'eee' } }
*/
集合交集
//封装set
function Set(){
this.items = {}
//查找
Set.prototype.has = function(value){
return this.items.hasOwnProperty(value);
}
//添加
Set.prototype.add= function(value){
if(this.has(value)) return false;
this.items[value] =value;
}
//删除
Set.prototype.del = function (value) {
if(!this.has(value)) return false;
delete this.items[value];
}
//清空集合
Set.prototype.clear = function(){
this.items ={}
}
//集合长度
Set.prototype.size = function () {
return Object.keys(this.items).length
}
//获取集合中元素的值
Set.prototype.getValue = function () {
return Object.values(this.items);
}
/*
交集:将两个集合中共同的元素添加到新的集合中
*/
Set.prototype.intersection = function (setB) {
let newSet = new Set();
let values = this.getValue();
for(let i = 0 ; i<values.length;i++){
if(setB.has(values[i])){
newSet.add(values[i])
}
}
return newSet;
}
}
let set = new Set();
set.add('aaa');
set.add('bbb');
set.add('ccc');
let setB = new Set();
setB.add('aaa');
setB.add('ddd');
setB.add('eee');
console.log(set.intersection(setB));//Set { items: { aaa: 'aaa' } }
集合差集
//封装set
function Set(){
this.items = {}
//查找
Set.prototype.has = function(value){
return this.items.hasOwnProperty(value);
}
//添加
Set.prototype.add= function(value){
if(this.has(value)) return false;
this.items[value] =value;
}
//删除
Set.prototype.del = function (value) {
if(!this.has(value)) return false;
delete this.items[value];
}
//清空集合
Set.prototype.clear = function(){
this.items ={}
}
//集合长度
Set.prototype.size = function () {
return Object.keys(this.items).length
}
//获取集合中元素的值
Set.prototype.getValue = function () {
return Object.values(this.items);
}
/*
差集:将只存在集合A而不存在于集合B的元素添加到新的集合中
*/
Set.prototype.differentSet = function (setB) {
let newSet = new Set();
let values = this.getValue();
for(let i = 0 ; i<values.length;i++){
if(!setB.has(values[i])){
newSet.add(values[i])
}
}
return newSet;
}
}
let set = new Set();
set.add('aaa');
set.add('bbb');
set.add('ccc');
let setB = new Set();
setB.add('aaa');
setB.add('ddd');
setB.add('eee');
console.log(set.differentSet(setB));//Set { items: { bbb: 'bbb', ccc: 'ccc' } }
集合子集
集合A是集合B的子集
//封装set
function Set(){
this.items = {}
//查找
Set.prototype.has = function(value){
return this.items.hasOwnProperty(value);
}
//添加
Set.prototype.add= function(value){
if(this.has(value)) return false;
this.items[value] =value;
}
//删除
Set.prototype.del = function (value) {
if(!this.has(value)) return false;
delete this.items[value];
}
//清空集合
Set.prototype.clear = function(){
this.items ={}
}
//集合长度
Set.prototype.size = function () {
return Object.keys(this.items).length
}
//获取集合中元素的值
Set.prototype.getValue = function () {
return Object.values(this.items);
}
/*
差集:将只存在集合A而不存在于集合B的元素添加到新的集合中
*/
Set.prototype.subSet = function (setB) {
let values = this.getValue();
for(let i = 0 ; i<values.length;i++){
if(!setB.has(values[i])){
return false;
}
}
return true;
}
}
let set = new Set();
set.add('aaa');
let setB = new Set();
setB.add('aaa');
setB.add('ddd');
setB.add('eee');
console.log(set.subSet(setB));//true