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)擴充套件運算子解構setlet 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 ...