新的資料結構set
set例項的屬性和方法
1)set結構的例項有以下屬性
set.prototype.constructor: 建構函式,預設就是set函式
set.prototype.size:返回set例項的成員總數
2)set例項的方法分為兩大類:操作方法(用於運算元據)和遍歷方法(用於遍歷成員)
操作方法(用於運算元據)
-add(value): 新增某個值,返回set結構本身。
-delete(value):刪除某個值,返回乙個布林值,標書刪除是否成功
-has(value):返回乙個布林值,表示該值是否為set的成員
-clear():清除所有成員,沒有返回值
let s2 = new set();
s2.add(1).add(2).add(2)
console.log(s2.size);
console.log(s2.has(1));
console.log(s2.has(2));
console.log(s2.has(3));
s2.delete(2);
console.log(s2.has(2));
遍歷方法(用於遍歷成員)
-keys():返回鍵名的遍歷器;
-values():返回鍵值得遍歷器;
-entries():返回鍵值對的遍歷器:
-foreach():使用**函式遍歷每個成員;
注:需要特別指出的是,set的遍歷順序就是插入順序。這個特性有時非常有用,比如使用 set 儲存乙個**函式列表,呼叫時就能保證按照新增順序呼叫。
由於 set 結構沒有鍵名,只有鍵值(或者說鍵名和鍵值是同乙個值),所以keys方法和values方法的行為完全一致。
let set5 = new set(['red', 'green', 'blue']);
for(let item of set5.keys())
for(let item of set5.values())
for(let [key, value] of set5.entries())
-for...of....
for(let x of set5)
-foreach()
set5.foreach((value, key) => console.log(key + ':' + value));
遍歷的應用
let set6 = new set(['red', 'green', 'blue']);
let arr = [...set6];
console.log(arr);
let arr2 = [3, 5, 2, 2, 5, 5];
let unique = [...new set(arr2)];
console.log(unique);
let set7 = new set([1, 2, 3]);
set7 = new set([...set7].map(x => x * 2));
console.log(set7)
let a1 = new set([1, 2, 3]);
let b1 = new set([4, 3, 2]);
/*並集*/
let union = new set([...a, ...b]);
/*交集*/
let intersect = new set([...a].filter(x => b.has(x)));
/*差集*/
let difference = new set([...a].filter(x => !b.has(x)));
去除陣列中重複成員的方法
function dedepe(array)
console.log(dedepe([1, 1, 2, 3]));
3)注意點:set結構不會新增重複的值
set加入值得時候,不會發生型別的轉換,5 和 '5'是不同的值。set 內部判斷兩個值是否不同,使用的演算法叫做「same-value-zero equality」,它類似於精確相等運算子(===),主要的區別是nan等於自身,而精確相等運算子認為nan不等於自身。
兩個nan是相等的 只能加入乙個
let set3 = new set();
let a = nan;
let b = nan;
set3.add(a);
set3.add(b);
console.log(set3);
兩個物件是不相等的
let set4 = new set();
set4.add({});
console.log(set4.size);
set4.add({});
console.log(set4.size);
新的資料結構Set
一種新的資料解構 set 成員值是唯一的 let s new set 1,2,3 s.add imooc add set 增加 鏈式操作 s.delete 2 刪除 s.clear 清空所有資料 console.log s.has 1 判斷set裡是否有某乙個值 返回布林值 console.log ...
資料結構6 串
串是一種特殊的線性表,串中每個資料元素都是乙個單字元,對串進行操作時,經常將若干字元作為乙個整體進行處理。s是串名,引號不屬於串的內容。串賦值strassign sqstring s1,sqstring s2 求串長strlength sqstring s 串比較strcompare sqstrin...
資料結構實驗6
因為精度問題,請使用double存資料。要求建立棧類,採用陣列描述 計算數學表示式的值。輸入數學表示式,輸出表示式的計算結果。數學表示式由單個數字和運算子 構成,例如 2 3 4 5 6 4。假定表示式輸入格式合法。格式輸入 第一行乙個整數n 1 n 100 代表表示式的個數。接下來n行,每行乙個表...