美文网首页
Set 和 Map 数据结构

Set 和 Map 数据结构

作者: 时间久了也就那样了 | 来源:发表于2019-01-27 15:13 被阅读0次

    var set = new Set([1, 2, 3, 4, 4]);

    [...set]     // [1, 2, 3, 4]

    var s = new Set();

    [2, 3, 5, 4, 5, 2, 2].map(x => s.add(x));

    for (let i of s) { console.log(i);}            // 2 3 5 4

    Set 数据结构:::::它类似于数组,但是成员的值都是唯一的,没有重复的值。

    四个操作方法:

    set.add(value):添加某个值,返回Set结构本身。

    set.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。

    set.has(value):返回一个布尔值,表示该值是否为Set的成员。

    set.clear():清除所有成员,没有返回值

    Map结构:::::提供了“值—值”的对应,是一种更完善的Hash结构实现。如果你需要“键值对”的数据结构,Map比Object更合适。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

    var m = new Map();

    var o = {p: "Hello World"};

    m.set(o, "content")

    m.get(o) // "content"

    m.has(o) // true

    m.delete(o) // true

    m.has(o) // false

    实例属性和方法:size、set、get、has、delete、clear

    遍历方法:keys()、values()、entries()、forEach()


    Object.assign(target, ...sources)   target目标对象。sources源对象

    如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖。后来的源的属性将类似地覆盖早先的属性。

    const object1 = {

      a: 1,b: 2,c: 3

    };

    const ob = Object.assign({c: 4, d: 5}, object1);

    console.log(ob)

    Object { c: 3, d: 5, a: 1, b: 2 }

    复制一个对象

    var obj = { a: 1 };

    var copy = Object.assign({}, obj);

    console.log(copy); // { a: 1 }

    针对深拷贝,需要使用其他方法,因为 Object.assign()拷贝的是属性值。假如源对象的属性值是一个指向对象的引用,它也只拷贝那个引用值。

    function test() {

      'use strict';

      let obj1 = { a: 0 , b: { c: 0}};

      let obj2 = Object.assign({}, obj1);

      console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}

      obj1.a = 1;

      console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}

      console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}

      obj2.a = 2;

      console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}

      console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 0}}

      obj2.b.c = 3;

      console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 3}}

      console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 3}}

      // Deep Clone

      obj1 = { a: 0 , b: { c: 0}};

      let obj3 = JSON.parse(JSON.stringify(obj1));

      obj1.a = 4;

      obj1.b.c = 4;

      console.log(JSON.stringify(obj3)); // { a: 0, b: { c: 0}}

    }

    相关文章

      网友评论

          本文标题:Set 和 Map 数据结构

          本文链接:https://www.haomeiwen.com/subject/fldgjqtx.html