Array, Set, Map

这三个都是用来储存一堆数据的,set和map在算法题中多用于查找,总结一下用法和区别

1. array

var a = ['A', 'B', 'C'];  

2. set:一组key的集合,没有value。key不能重复,set无重复值

var s = new Set(['A', 'B', 'C']); 

1)s.add('d')

2)s.delete('d')

3. map: 一组键值对的结构,具有极快的查找速度。一个key对应一个值
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]); 
1)m.set('4', a)//设置新属性

2)m.get('1')//查找1对应的值

3)m.delete('2')//删除key‘2’

4)m.has('3)//是否存在3

4.for (var x of a){...}//遍历,打印出来对象

for(var x in a){...}//遍历打印出来

5. 集合操作:这一部分摘录自http://www.cnblogs.com/dark-liu/p/5808140.html

function add(item) {
    if (this.dataStore.indexOf(item) > -1) {
        return false;
    } else {
        this.dataStore.push(item);
        return true;
    }
}


function remove(item) {
    var pos = this.dataStore.indexOf(item);
    if (pos > -1) {
        this.dataStore.splice(pos, 1);
        return true;
    }
    return false;
}

function size() {
    return this.dataStore.length;
}

function contains(item) {
    return this.dataStore.indexOf(item) > -1;
}

function show() {
    return this.dataStore;
}

// 并集
function union(set) {
    var tempSet = new Set();
    // 1:将当前的集合元素插入临时集合
    this.dataStore.forEach(function (item) {
        tempSet.add(item);
    });
    set.dataStore.forEach(function (item) {
        if (!tempSet.contains(item)) {
            tempSet.add(item);
        }
    })
    return tempSet;
}

// 交集
function intersect(set) {
    var tempSet = new Set();
    var that = this;
    set.dataStore.forEach(function (item) {
        if (that.dataStore.indexOf(item)>-1) {
            tempSet.add(item);
        }
    })
    return tempSet;
}

// 是否子集
function subset(set) {
    return this.dataStore.every(function (item) {
        return set.dataStore.indexOf(item)>-1
    })
}

// 补集,产生一个集合,某个元素属于一个集合不属于另外一个集合
function difference(set){
    var tempSet=new Set();
    this.dataStore.forEach(function(item){
        if( !set.contains(item)){
        tempSet.add(item); 
        }
    })
    return tempSet;
}
function Set() {
this.dataStore = [];
this.add = add;
this.remove = remove;
this.size = size;
// 并集操作
this.union = union;
// 交集操作
this.intersect = intersect;
// 是否是子集
this.subset = subset;
// 补集
this.difference = difference;
this.show = show;
this.contains=contains;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值