博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript数据结构与算法——集合
阅读量:5951 次
发布时间:2019-06-19

本文共 2139 字,大约阅读时间需要 7 分钟。

1.集合数据结构

集合是一组无序且唯一(不能重复)的项组成的。这个数据结构使用了和有限集合相同的数学概念。

2.创建集合

function Set() {    // 这里使用对象而不是数组来表示集合     // js对象中不允许一个键值指向两个不同属性,也保证了集合中的元素都是唯一的    let items = {};    //1.首先实现has(value)方法    this.has = function(value) {        return value in items;        //return items.hasOwnProperty(value);    }    //2.向集合添加一个项    this.add = function(value) {        if (!this.has(value)) {            items[value] = value;            return true;        } else{            return false;        }    }    //3.移除某一项和清空集合    this.remove = function(value) {        if (this.has(value)) {            delete items[value];            return true;        } else{            return false;        }    }    this.clear = function() {        items = {};    }    //4.返回集合长度    this.size = function() {        return Object.keys(items).length;    }    // 兼容性更好    this.sizeLegacy = function() {        let count = 0;        for(let key in items) {            if(items.hasOwnProperty(key))                 ++count;        }        return count;    }    //5.返回一个包含集合中所有值的数组    this.values = function() {        let values = [];        for (let i = 0, keys=Object.keys[items]; i < keys.length; i++) {            values.push(items[keys[i]])        };        return values;    }    // 兼容性更好    this.valuesLegacy = function() {        let values = [];        for (let key in items) {            if(items.hasOwnProperty(key)) {                values.push(items[keys)            }        };        return values;    }}

集合的使用

let set = new Set();set.add(1);console.log(set.values()); // ['1']console.log(set.has(1)); // trueconsole.log(set.size()); // 1set.add(2);console.log(set.values()); // ['1', '2']console.log(set.has(2)); // trueconsole.log(set.size()); // 2set.remove(1);console.log(set.values()); // ['2']console.log(set.has(1)); // falseconsole.log(set.size()); // 1

3.集合的操作

集合有:并集、交集、差集、子集

// 1.实现并集this.union = function(otherSet) {    let unionSet = new Set();    let values = this.values();    for(let i=0; i
otherSet.size()) { return false; } else { let values = this.values(); for(let i=0; i

在es6中新增了set类,我们也可以使用其中自带的方法。

转载地址:http://cxsxx.baihongyu.com/

你可能感兴趣的文章
shell 脚本--备份、还原mysql数据库
查看>>
JS脚本静态变量调用方法
查看>>
linux中cacti和nagios整合
查看>>
Parallels Desktop12推出 新增Parallels Toolbox
查看>>
正则表达式验证身份证格式是否正确
查看>>
Firebird(全功能的,免维护的数据库,能够管理多个独立的数据库) V2.1.3 英文特别版...
查看>>
xml格式文件解析
查看>>
ios百度地图-路径规划
查看>>
Python高效编程技巧
查看>>
配置Eclipse使用maven构建项目默认JDK为1.8
查看>>
jsp内置对象以及jsp动作
查看>>
Struts上路_09-数据类型转换
查看>>
CMake与动态链接库(dll, so, dylib)
查看>>
myeclipse(eclipse)乱码处理
查看>>
SpringBoot 过滤器, 拦截器, 监听器 对比及使用场景
查看>>
数据库索引探索
查看>>
struts2使用json需要注意的问题
查看>>
gitlab runner 优化
查看>>
快速添加百度网盘文件到Aria2 猴油脚本
查看>>
mac 无法登录mysql的解决办法
查看>>