美文网首页
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