es6學習之Set和Map結構

2021-08-16 06:40:52 字數 3012 閱讀 5372

set結構是類似於陣列結構,但是成員都是不重複的值(判斷不重複類似object.is()方法,但是+0和-0又是相同的處理,object.is(+0,-0); // false)

缺點是沒辦法像陣列一樣通過下標取值的方法.

weekset結構和set相似,但是成員只能是物件,且物件是弱引用(成員中的物件不存在了,在本結構中也就不存在了),重點是沒有size屬性,沒有遍歷介面

任何具有iterator介面的資料結構都能作為new set的引數

let

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

set.size // 3

(1)屬性

set.prototype.constructor 建構函式,就是set本身

set.prototype.size set的成員總數

(2)操作方法

s.add(1).add(2).add(2);

// 注意2被加入了兩次

s.size // 2

s.has(1) // true

s.has(2) // true

s.has(3) // false

s.delete(2); // true

s.has(2) // false

(3)遍歷方法
let

set = new set(['red', 'green', 'blue']);

for (let item of set.keys())

// red

// green

// blue

for (let item of set.values())

// red

// green

// blue

for (let item of set.entries())

// ["red", "red"]

// ["green", "green"]

// ["blue", "blue"]

set2 = new set([1, 4, 9]);

set2.foreach((value, key) => console.log(key + ' : ' + value))

// 1 : 1

// 4 : 4

// 9 : 9

(1)陣列去重
let arr = [1,2,3,4,5,4,23,1,3];

arr= array.from(new

set(arr)); // [1, 2, 3, 4, 5, 23]

(2)擴充套件運算子解構set
let arr = [1,2,3,4,5,4,23,1,3];

letset = new set(arr);

let arr4 = [...set]; // [1, 2, 3, 4, 5, 23]

(3)set實現交集,並集,差集
let a = new

set([1, 2, 3]);

let b = new

set([4, 3, 2]);

// 並集

let union = new

set([...a, ...b]);

// set

// 交集

let intersect = new

set([...a].filter(x => b.has(x)));

// set

// 差集

let difference = new

set([...a].filter(x => !b.has(x)));

// set

map結構是鍵值對集合(hash結構).map可以使用物件作為鍵名.map內部的鍵名的重複檢測和set相同

weekmap結構類似map,區別是鍵名只能是物件,且物件是弱引用,類似於weekset的弱引用

任何具有iterator介面的資料結構都能被map構造為map結構,但是結構要有一定的定製,類似於下方的陣列的結構

const

map = new map([

['name', '張三'],

['title', 'author']

]);map.size // 2

map.has('name') // true

map.get('name') // "張三"

map.has('title') // true

map.get('title') // "author"

(1)屬性

map.prototype.size map的成員數量

(2)操作方法

(3)遍歷方法

和set擁有同樣的遍歷方法

const map = new map([

['f', 'no'],

['t', 'yes'],

]);for (let key of map.keys())

// "f"

// "t"

for (let value of map.values())

// "no"

// "yes"

for (let item of map.entries())

// "f"

"no"

// "t"

"yes"

// 或者

for (let [key, value] of map.entries())

// "f"

"no"

// "t"

"yes"

// 等同於使用map.entries()

for (let [key, value] of map)

// "f"

"no"

// "t"

"yes"

map.foreach(function(value, key, map) );

暫無

Es6之Set和Map結構

set 類似陣列,但是它的成員沒有重複值 let s new set let s2 new set 1,2,3,4,1,2,3 1,2,3,4,1,2,3 foreach x s.add x console.log s console.log s2 可以看出會去掉重複值 那我們就可以利用這個特性來去...

ES6學習之set和map資料結構

基本用法 es6提供了新的資料結構set。它類似陣列,但是成員都是唯一的,不允許重複。其本身是乙個建構函式,用來生成set資料結構。const set new set 1,2,3,4,4 const sets new set document.queryselectorall div 複製 set函...

ES6入門之set和map

es6提供了新的資料結構set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。set函式可以接受乙個陣列 或類似陣列的物件 作為引數,用來初始化。例一 var set new set 1,2,3,4,4 set 1,2,3,4 var s newset 2,3,5,4,5,2,2 map x ...