数据结构Set
集合的基本概念:集合是由一组无序且唯一(既不能重复)的项组成,这个数据结构使用了与有限集合相同的数据概念,应用在计算机的数据结构中。
特点:key和value相同,没有重复的value。
ES6 提供了数据结构Set,它类似于数组,但是成员的值都是唯一的,没有重复的值
1.如何创建一个Set
const s = new Set([1,2,3,4])
console.log(s)// Set(4) {1, 2, 3, 4}
2.Set类的属性
console.log(s.size)// 4
3.Set的方法
(1) set.add(value) 添加一个数据,返回Set结构本身
s.add('a').add('b')console.log(s) // Set(6) {1, 2, 3, 4, "a","b"}
(2)set.delete(value) 删除指定数据,返回一个布尔值,表示删除是否成功(删除e成功返回true,删除失败返回false)
console.log(s.delete(4))// true
console.log(s)// Set(5) {1, 2, 3, "a","b"}
(3) set.has(value) 判断该值是否为set的成员,返回一个布尔值(如果存在就返回true,不存在返回false)
console.log(s.has(1));// true
(4) set.clear() 清除所有数据,没有返回值。
s.clear();console.log(s) // Set(0) {}
(5) forEach() 使用回调函数遍历每一个成员
s.forEach(function(value,key,set){
console.log(value+"hello");
})
console.log(s) // Set(5) {1, 2, 3, "a","b"}
Set 不允许有重复的数据
数据结构Map
字典:是用存储不重复key的Hash结构。不同股集合(Set)的是,字典使用的是[键,值]的形式来存储数据结构的。
JavaScript 的对象只能用字符串当作键。这个给它的使用带来了很大的限制。
为了解决这个问题,ES6提供了Map数据结构。他类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,object结构提供了“字符串-值”的对应。Map结构提供了“值-值”的对应,是一种更完善的Hash结构实现。如果你需要“键值对”的数据结构,Map比object更合适
1.如何创建一个Map
const map = new Map([
['a',1], ['b',2]
]);
console.log(map) // Map(2) {"a" => 1, "b" => 2}
2.Map 类的属性
console.log(map.size) // 2
3.Map 类的方法
(1) set(key,value) 设置简明key对应的键值为value,然而返回整个Map结构,如果key已经有值了,则键值会被更新,否则就会生成新的键
map.set('hello','word').set('hi','word')
console.log(map) //Map(4) {"a" => 1, "b" => 2, "hello" => "word", "hi" => "word"}
map.set('hello','word').set('hi','word').set('hello','nice')
console.log(map) //Map(4) {"a" => 1, "b" => 2, "hello" => "nice", "hi" => "word"}
(2) get(key) get方法读取key对应的键值,如果找不到key,返回undefined
console.log(map.get(‘a’)) // 1
console.log(map.get('d')) // undefined
(3) delete(key) 删除某个键值,返回true,如果删除失败,返回false
console.log(map.delete('a')) // true
console.log(map.delete('a')) // false 前面已经删除一次了,所以返回false
(4) has() 方法返回一个布尔值,表示某个键是否在当前Map对象之中;如果在返回true,如果不在,返回false
console.log(map.has(hi)) // true
(5) clear() 清除所有数据,没有返回值
map.clear();
console.log(map) // Map(0) {}
(6) keys() 返回键名的遍历器
(7) values() 返回键值的遍历器
(8) entries() 返回键值对的遍历器
(9) forEach() 使用回调函数遍历每个成员
map.forEach(function(key,value,map){
console.log(key+':'+value) // 每一项对应的匹配
})
map 里面的key的排列顺序是按照添加顺序进行排列的