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']
//}