JavaScript ES6入门教程:11.set和map



set和map

set

Set结构类似于数组,但是成员的值都是唯一的,会去除重复的值。Set函数可以接受一个数组(或类数组)作为参数,用来初始化。

 const s = new Set([1, 2, 3, 4, 4]);  //Set(4) {1, 2, 3, 4}

属性和方法

Set.prototype.size
返回Set实例的成员总数。

Set.prototype.add(value)
添加某个值,返回 Set 结构本身。
Set.prototype.delete(value)
删除某个值,返回一个布尔值,表示删除是否成功。
Set.prototype.has(value)
返回一个布尔值,表示该值是否为Set的成员。
Set.prototype.clear()
清除所有成员,没有返回值。

Array.from()
将 Set 结构转为数组

const items = new Set([1, 2, 3, 4, 5]);
const array = Array.from(items);

由于Set 结构不会添加重复的值,可以用来去除数组重复的成员:

let arr = [0,0,0];
let setArr = new Set(arr);
Array.from(setArr); //[0]

去除字符串重复的值:

let str = 'asdasd';
let setStr = new Set(str);
Array.from(setStr).join('');  //'asd'

map

Map 数据结构类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

let map = new Map();
let obj = {a:1};
map.set(obj,'object');  //Map(1) {{…} => "object"}

对同一个键多次赋值,后面的值将覆盖前面的值。注意,只有对同一个对象的引用,Map 结构才将其视为同一个键:

let map = new Map();
map.set([1],1);
map.set([1],2);
console.log(map)  //Map(2) {Array(1) => 1, Array(1) => 2}

如上,实际上这是两个不同的数组实例,内存地址是不一样的。

属性和方法

1.size 属性
size属性返回 Map 结构的成员总数。
2. Map.prototype.set(key, value)
set方法设置键名key对应的键值为value,然后返回整个 Map 结构。
3. Map.prototype.get(key)
get方法读取key对应的键值,如果找不到key,返回undefined。
4. Map.prototype.has(key)
has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中。
5. Map.prototype.delete(key)
delete方法删除某个键,返回true。如果删除失败,返回false。
6.Map.prototype.clear()
clear方法清除所有成员,没有返回值。

遍历方法

  1. Map.prototype.keys() 返回键名的遍历器。
  2. Map.prototype.values() 返回键值的遍历器。
  3. Map.prototype.entries() 返回所有成员的遍历器。
  4. Map.prototype.forEach() 遍历 Map 的所有成员。

上一篇: 10.Symbol 类型 下一篇: 13.promise