ES6系列教程之Set和Map数据结构
技术、总结 Feb 10, 2018
Set
Set数据结构类似于数组,但是成员的值都是唯一的,没有重复的值。
属性和方法
属性
Set.prototype.constructor :构造函数,默认值就是Set函数
Set.prototype.size :返回Set实例的成员总数
方法
操作方法(用于操作数据)
Set.prototype.add(value) :添加某个值,返回Set结构本身
Set.prototype.delete(value) :删除某个值,返回一个布尔值,表示删除是否成功
Set.prototype.has(value) :返回一个布尔值,表示该值是否为Set的成员
Set.prototype.clear() :清除所有成员,没有返回值
遍历操作(用于遍历成员)
Set.prototype.keys() :返回键名的遍历器
Set.prototype.values() :返回键值得遍历器
Set.prototype.entries() :返回键值对的遍历器
Set.prototype.forEach() :使用回调函数遍历每个成员
注:Set的遍历顺序就是插入顺序。
示例
// example1
const set = new Set([1, 2, 2, 3, 4]);
[...set] // [1, 2, 3, 4]
// example2
const setS = new Set('ababbc');
[...setS] // ['a', 'b', 'c']
// example3
const items = new Set([1,2,2,3,4]);
items.size // 4
// example4
let s = new Set();
s.add(1).add(2).add(2);
s.size // 2
s.has(1) // true
s.has(3) // false
//example5
let set = new Set(['red', 'green', 'blue']);
for (let item of set.keys()) {
console.log(item)
}
// red
// green
// blue
Map
Map数据结构类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
属性和方法
属性
Map.prototype.size :返回Map结构的成员总数
方法
操作方法
Map.prototype.set(key, value) :设置键名key对应的键值为value,然后返回整个Map结构。如果key已经有值,则键值会被更新,否则就新生成该键。
Map.prototype.get(key) :读取key对应的键值,如果找不到key,返回undefined
Map.prototype.has(key) :返回一个布尔值,表示某个键是否在当前Map对象中
Map.prototype.delete(key) :删除某个键,返回true,如果删除失败返回false
Map.prototype.clear() :清除所有成员,没有返回值
遍历方法
Map.prototype.keys() :返回键名的遍历器
Map.prototype.values() :返回键值得遍历器
Map.prototype.entries() :返回所有成员的遍历器
Map.prototype.forEach() :遍历Map的所有成员
示例
const m = new Map();
const o = {p: 'Hello world'};
m.set(o, 'content');
m.get(o); // 'content'
m.size; // 1
m.has(o); // true
m.delete(o); // true
以数组作为参数
const map = new Map([
['name', '张三'],
['title', 'Text']
]);
map.size; // 2
map.has('name'); // true
map.get('name'); // '张三'
Map转为数组
const map = new Map()
.set(true, 7)
.set({foo:3}, ['abc']);
[...map];
// [[true, 7], [{foo:3}, ['abc']]]
数组转为Map
new Map([
[true, 7],
[{foo:3}, ['abc']]
]);
// Map {
// true => 7,
// Object {foo:3} => ['abc']
//}