JavaScript 集合

目录

一、手写Set

二、ES6中的Set

三、交集、并集、差集


一、手写Set

// 无重复元素
// {'1':1,'200':200}形式
class Set{
    constructor(){
        this.items = {};
    }

    add(data){
        if(!this.has(data)){
            this.items[data] = data;
            return true;
        }
        return false;
    }

    delete(data){
        if(this.has(data)){
            delete this.items[data];
            return true;
        }
        return false;
    }

    has(data){
        return data in this.items;
    }

    clear(){
        this.items = {};
    }

    size(){
        return Object.keys(this.items).length;
    }

    values(){
        return Object.values(this.items);
    }


}

var set = new Set();

set.add(10); //{'10':10}
set.add(20);  //{'10':10,'20':20}
set.add(300);
set.delete(20);
console.log(set);
var s = set.size();
var v = set.values();
console.log(s);
console.log(v);
set.clear();
console.log(set);

二、ES6中的Set

// ES6 中的 Set
var set = new Set();
set.add(10);
set.add(20);
set.add(30);
set.add(30);
set.delete(20);
set.has(20);
// 返回的是迭代器
console.log(set.values()); 
// size是一个属性
console.log(set.size);
console.log(set);

set.clear();
console.log(set);

三、交集、并集、差集

 

// 1、并集
var setA = new Set([1,2,3]);
var setB = new Set([2,3,4]);
var result1 = new Set([...setA,...setB]);
console.log(result1);

// 2、交集
var result2 = new Set([...setA].filter(item=>setB.has(item)));
console.log(result2);

// 3、差集
var result3 = new Set([...setA].filter(item=>!setB.has(item)))
console.log(result3);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值