最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

ES6的Set数据结构是什么

来源:动视网 责编:小采 时间:2020-11-27 20:13:26
文档

ES6的Set数据结构是什么

ES6的Set数据结构是什么:ES6:Set了解SetES6提供了数据结构Set。类似于数组,但是没有重复值。Set本身是一个构造函数,用来生成Set数据结构const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));for(let i of s ) { consol
推荐度:
导读ES6的Set数据结构是什么:ES6:Set了解SetES6提供了数据结构Set。类似于数组,但是没有重复值。Set本身是一个构造函数,用来生成Set数据结构const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));for(let i of s ) { consol


  • 向Set加入值时,不会发生类型转换(类似于精确相等===),但是要注意在Set里NaN是等于自身的。另外两个对象总是不相等的。

  • let set = new Set();let a = NaN;let b = NaN;
    set.add(a);
    set.add(b);
    set; //{NaN} 只能加入一个,说明Set内部两个NaN是相等的

    Set实例的属性和方法

  • 属性:

  • Set.prototype.constructor:构造函数,默认就是Set函数

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

  • 操作方法(方法的具体实现见:我对JS集合的简单学习):

  • add(value):添加一个值,返回Set结构本身

  • delete(value):删除某个值,返回布尔值

  • has(value):返回布尔值,表示是否是成员

  • clear():清除所有成员,无返回值

  • s.add(1).add(2).add(2); //链式写法s.size(); //2s.has(3); //falses.delete(2);
    s.has(2); //false
  • 遍历方法

  • keys():返回键名的遍历器(什么是遍历器?Iterator)

  • values():返回键值的遍历器

  • entries():返回键值对的遍历器

  • forEach():使用回调函数遍历每个成员

  • 这里要注意Set的键名和键值是同一个值,所以key()和values()行为是一致的。

    let set = new Set(['red', 'green', 'no']);for(let item of set.keys()) { console.log(item); //red green no}for(let item of set.values()) { console.log(item); //red green no}for(let item of set.entries()) { console.log(item); //['red': 'red'] ['green': 'green'] ['no': 'no']}//对每个成员执行某种操作,参数依次为键值、键名、集合本身new Set([1, 2, 3]).forEach((value, key) => console.log(value * 2)); //2 4 6

    操作集合

    let a = new Set([1, 2, 3]);let b = new Set([4, 3, 2]);//并集let union = new Set([...a, ...b]); //{1, 2, 3, 4}//交集let intersect = new Set([...a].filter(x => b.has(x))); //{2, 3}//差集let difference = new Set([...a].filter(x => !b.has(x))); //{1}

    号外:扩展运算符(...)内部使用for...of循环,所以应该知道for of是干嘛的吧

    数组的map()filter()可用于Set

    let set = new Set([1, 2, 3]);set = new Set([...set].map(x => x * 2)); //set: {2, 4, 6}let set = new Set([1, 2, 3, 4, 5]);set = new Set([...set].filter(x => (x % 2) == 0)); //set {2, 4}

    文档

    ES6的Set数据结构是什么

    ES6的Set数据结构是什么:ES6:Set了解SetES6提供了数据结构Set。类似于数组,但是没有重复值。Set本身是一个构造函数,用来生成Set数据结构const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));for(let i of s ) { consol
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top