es6 的学习之 set 和 map

set

set相似于数组,但成员惟一,没有重复值。javascript

const s = new Set();
    [ 1, 3, 2, 4, 5, 3, 2, 1, 10, 7].forEach(a => s.add(a));
    console.log(s);复制代码


set 遍历出来是以key value的形式存储java

当Set加入值的时候,不会发生类型转换,set判断值相似于(===)精确相等运算符,但有区别,在于NaN等于自身,但精确相等运算符认为nan不等于自身。数组

const set = new Set();
    const a = NaN;
    const b = NaN;
    set.add(a);
    set.add(b);
    console.log(set);

// Set(1) {NaN}复制代码

set的两个对象老是不相等的bash

let set = new Set();

set.add({});
set.size // 1

set.add({});
set.size // 2复制代码

Set 实例的方法分为两大类:操做方法(用于操做数据)和遍历方法(用于遍历成员)。下面先介绍四个操做方法。数据结构

操做方法(操做数据)

  • add(value):添加某个值,返回 Set 结构自己。
  • delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  • has(value):返回一个布尔值,表示该值是否为Set的成员。
  • clear():清除全部成员,没有返回值。
  • Array.from()方法能够将set结构改成数组。

const item = new Set([ 9, 2, 3, 4, 2, 1, 3, 8, 1, 9 ]);
    console.log(item);
    const array = Array.from(item);
    console.log(array);
    for (let a of array) {
      console.log(a);
    }复制代码


遍历方法(遍历成员)

Set结构有4种遍历方法,能够便利成员函数

  • keys():返回键名的遍历器
  • values():返回键值的遍历器
  • entries():返回键值对的遍历器
  • forEach():使用回调函数遍历每一个成员
Set的遍历顺序就是插入顺序,(Set保存一个回调函数,调用时就能保证按照添加顺序调用)

Set的forEach方法:ui

const set2 = new Set([ 1, 5, 4, 5 ]);
    set2.forEach((value, key) => {
      console.log(key + ':' + value);
    });复制代码


set可用扩展运算符将Set对象转为数组;spa

const set = new Set([ 1, 2, 3, 4, 5 ]);
    console.log('set', set);
    console.log('...set', [...set]);
    console.log('Array.from', Array.from(set));复制代码


map

“键值对”数据结构,3d

const map = new Map([      ['name', '张三'],      ['title', 'author']    ]);    console.log(map);    console.log(map.has('name'));    console.log(map.get('title'));
复制代码

map实例的属性和操做方法

1. size属性code

const map = new Map();    map.set('a', '111');    map.set('b', '222');    console.log(map.size);   // 2复制代码

2. set(key, value)

const map = new Map()    .set(1, 'a')    .set(2, 'b')    .set(3, 'c');    map.set(2, 'h');    console.log(map);复制代码

set() 方法能够采用链式赋值,若第二次给同名键赋值,则覆盖第一次的值。

3. get(key)

4. delete(key)

5. has(key)

6. clear()      清除全部成员

map 的遍历方法

  • keys():返回键名的遍历器。
  • values():返回键值的遍历器。
  • entries():返回全部成员的遍历器。
  • forEach():遍历 Map 的全部成员。

map的便利顺序就是插入顺序

map 转化为数组的方法:扩展运算符

  1. const map = new Map([      [ 'f', 'no' ],      [ 't', 'yes' ]    ]);
        console.log([...map]);复制代码

数组转为map的方法:将数组传入Map构造函数,就能够转为Map

const map = new Map([      [ '111', 'su' ],      [ '333', 'zhou' ]    ]);    console.log(map);复制代码

{"111" => "su", "333" => "zhou"}复制代码
相关文章
相关标签/搜索