1、es6 提供了新的資料結構 set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值
set 本身是乙個建構函式,用來生成 set 資料結構。
const s = new set();
[2, 3, 5, 4, 5, 2, 2].foreach(x=> s.add(x));
for (let i of s) //2
354
上面**通過add方法向 set 結構加入成員,結果表明 set 結構不會新增重複的值。
set 函式可以接受乙個陣列(或者具有 iterable 介面的其他資料結構)作為引數,用來初始化。
2、另一種種去除陣列重複成員的方法
// 去除陣列的重複成員
[...
newset(array)]
3、資料型別
向 set 加入值的時候,不會發生型別轉換,所以5和」5」是兩個不同的值。set 內部判斷兩個值是否不同,使用的演算法叫做「same-value equality」,它類似於精確相等運算子(===),主要的區別是nan等於自身,而精確相等運算子認為nan不等於自身。
let set = new set();
let a = nan;
let b = nan;
set.add(a);
set.add(b);
set // set
上面**向 set 例項新增了兩個nan,但是只能加入乙個。這表明,在 set 內部,兩個nan是相等。
另外,兩個物件總是不相等的。
let set = new set();
set.add({});
set.size // 1
set.add({});
set.size // 2
4、set的方法
set 結構的例項有以下屬性。
set 例項的方法分為兩大類:操作方法(用於運算元據)和遍歷方法(用於遍歷成員)。下面先介紹四個操作方法。
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);
s.has(2) // false
對比一下object&set的區別
// 物件的寫法
const properties = ;
if (properties[somename])
// set的寫法
const properties = new set();
properties.add('width');
properties.add('height');
if (properties.has(somename))
這提供了陣列去重的另一種方式
function
dedupe
(array)
dedupe([1, 1, 2, 3]) // [1, 2, 3]
遍歷操作
set 結構的例項有四個遍歷方法,可以用於遍歷成員。
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"]
var set2 = new set([1, 4, 9]);
set2.foreach((value, key) => console.log(key + ' : ' + value))
// 1 : 1
// 4 : 4
// 9 : 9
set資料結構
set 資料結構,類似陣列。所有的資料都是唯一的,沒有重複的值。它本身是乙個建構函式。屬性和方法 應用 var arr 1 1,1 3,4 5,3 5 資料去重 varset new set arr console.log set console.log set.size 4 console.log...
set資料結構
set類似於陣列,但是成員的值都是唯一的,沒有重複的值 const s1 newset console.log s1,size 0 const s2 newset a b console.log s2,size 2 const s2 newset a b a console.log s2,size ...
Set資料結構
感覺跟python裡的set集合差不多啊 都可以去重 但是es6裡的set實際上是物件,裡面有鍵值對 建立let a new set 1,2,3 或者 let a new set 新增資料 let a new set 1,2,3 a.add 4 console.log a set 4 1,2,3,4...