Set 和 Map 数据结构

2020-03-12  本文已影响0人  简单tao的简单

Set 数据结构

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

new Set([1, 2, 3,4]) //Set {1, 2, 3, 4}
JSON.stringify(new Set([1, 2, 3,4])) // [1,2,3,4]
new Set('aaadfdf') //Set {"a", "d", "f"}
[...new Set('aaadfdf')] //["a", "d", "f"]
Set的用处
  1. 使用 Set 可以很容易地实现并集(Union)、交集(Intersect)和差集(Difference)
let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);

// 并集
let union = new Set([...a, ...b]);
// Set {1, 2, 3, 4}

// 交集
let intersect = new Set([...a].filter(x => b.has(x)));
// set {2, 3}

// 差集
let difference = new Set([...a].filter(x => !b.has(x)));
// Set {1}
  1. 数组去重
let arr = [...new Set([1,1,2,3,3,3,4,4])]
//[1, 2, 3, 4]

let arr = Array.from(new Set([1,1,2,3,3,3,4,4])) //Array.from()将一个类数组对象或者可遍历对象转换成一个真正的数组
//[1, 2, 3, 4]
  1. 字符串去重
let arr = [...new Set('aaadfdf')]
//["a", "d", "f"]

let arr = Array.from(new Set('aaadfdf')) //Array.from()将一个类数组对象或者可遍历对象转换成一个真正的数组
//["a", "d", "f"]

Map数据结构

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

const m = new Map();
const o = {p: 'Hello World'};

m.set(o, 'content')
console.log(m)
//Map{Object => "content"}

console.log(JSON.stringify(m))
//[[{"p":"Hello World"},"content"]]

Map 也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。

const map = new Map([
    ['name', '张三'],
    ['title', 'Author']
]);

console.log(map)
//Map{"name" => "张三", "title" => "Author"}

console.log(JSON.stringify(map))
//[["name","张三"],["title","Author"]]
Map的用处
上一篇下一篇

猜你喜欢

热点阅读