const set = new set();
set.add(1);
set.add(2);
set.add(2);
console.log(set.size); // 2
console.log([...set]); // [1, 2]
上面的**可以看到,因為set是沒有重複值的,所以當新增兩個2的時候只加進去乙個2。這裡size是set例項的乙個屬性,返回set例項的成員總數。
另外,set還可以接受乙個陣列作為引數,用來初始化。
const setaarrray = new set([1, 2, 2, "2", 3, 3, 4, 5, nan, nan, {}, {}]);
console.log([...setaarrray]); //[1, 2, "2" 3, 4, 5, nan, {}, {}];
這個時候2和"2"都加進去了,是因為在set內部判斷兩個值是否相等用的是全等"==="。有一點要注意的是,向 set 加入值時認為nan
等於自身,而精確相等運算子認為nan
不等於自身。所以上面**中,新增兩個nan時,加進去乙個。上面新增兩個空物件時都加進去了,說明兩個空物件是不相等的。在set內部認為,兩個物件總是不等的。
const set = new set();
set.add(1);
set.add(2);
console.log(set.size); //2
console.log(set.has(1)); //true
console.log(set.has(2)); //true
console.log(set.has('2')); //false
set.delete(2);
console.log(set.size); //1
console.log(set.has(2)); //false
keys
方法、values
方法、entries
方法返回的都是遍歷器物件。由於 set 結構沒有鍵名,只有鍵值(或者說鍵名和鍵值是同乙個值),所以keys
方法和values
方法的行為完全一致。下面**中entries
方法返回的遍歷器,同時包括鍵名和鍵值,所以每次輸出乙個陣列,它的兩個成員完全相等。
const set = new set(["a", "b", "c"]);
for (let item of set.keys())
for (let item of set.values())
for (let item of set.entries())
const set = new set(["a", "b", "c"]);
for (let item of set)
const set = new set(["a", "b", "c"]);
set.foreach((value, key) => );
const array = [1, 2, 3, 4, 4, 3, 2, 3];
const resultarray = [...new set(array)];
console.log(resultarray); // [1, 2, 3, 4]
const str = 'abbbcc';
const resultstr = [...new set(str)].join('');
console.log(resultstr); // "abc"
大概就是這些,如果想知道得更詳細可以去檢視es6。位址 Set資料結構
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 資料結構,類似陣列。所有的資料都是唯一的,沒有重複的值。它本身是乙個建構函式。屬性和方法 應用 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 ...