這節學習set資料結構,注意這裡不是資料型別,而是資料結構。它是es6中新的東西,並且很有用處。set的資料結構是以陣列的形式構建的。
set 宣告
set 和 array 的區別是 set 不允許內部有重複的值,如果有只顯示乙個,相當於去重。雖然 set 很像陣列,但是他不是陣列。let arr=new set(['晴天','sun','綠樹','束縛','sun']);
console.log(arr); //
set 值的增刪查
增加 add:
在使用 array 時,可以用 push 進行新增。set 稍有不同,他用更語義化的 add 進行新增。
刪除 deletelet arr=new set(['晴天','sun','綠樹','束縛','sun']);
console.log(arr); //
arr.add('angle');
console.log(arr); //
查詢 haslet arr=new set(['晴天','sun','綠樹','束縛','sun']);
console.log(arr); //
arr.add('angle');
console.log(arr); //
arr.delete('angle');
console.log(arr); //
用has進行值的查詢,返回的是true或者false。
刪除 clearlet arr=new set(['晴天','sun','綠樹','束縛','sun']);
console.log(arr.has('sun')); //
true
let arr=new set(['晴天','sun','綠樹','束縛','sun']);
console.log(arr); //
arr.clear();
console.log(arr); //{}
set 迴圈
for…of… 迴圈
size 屬性let arr=new set(['晴天','sun','綠樹','束縛','sun']);
for (let item of arr)
size 屬性可以獲得 set 值的數量。
foreach 迴圈let arr=new set(['晴天','sun','綠樹','束縛','sun']);
for (let item of arr)
console.log(arr.size);
let arr=new set(['晴天','sun','綠樹','束縛','sun']);
arr.foreach((value) => console.log(value));
weakset 宣告
這裡需要注意的是,如果你直接在new 的時候就放入值,將報錯。let weakobj = new weakset();
let obj = ;
weakobj.add(obj);
console.log(weakobj);
weakset裡邊的值也是不允許重複的,我們來測試一下。
總結:在實際開發中set用的比較多,weakset用的並不多,但是他對傳入值必須是物件作了很好的判斷,我們靈活應用還是有一定的用處的。let weakobj = new weakset();
let obj = ;
let obj1 = obj;
weakobj.add(obj);
weakobj.add(obj1);
console.log(weakobj);
第十一節 過載 11
php4中已經有了過載的語法來建立對於外www.cppcns.com部物件模型的對映,就像j a和com那樣.php5帶來了強大的物件導向過載,允許程式設計師建立自定義的行為來訪問屬性和呼叫方法.過載可以通過 get,set,and call幾個特殊方法來進行.當zend引擎試圖訪問乙個成員並沒有找...
第十一節,命名空間namespace
命名空間可以把不同的方法分散到不同的檔案去實現,如果你會objective c,他的作用和裡面的類目有異曲同工之妙。當然了也有很多不同的地方,首先要明白的是,命名空間並不是乙個類,你擴充套件他的方法並不是和類目一樣在擴充套件乙個類的方法。如果你學過net開發,獲取你會對這個命名空間有更好的理解。na...
第十一節std atomic原子操作
互斥量 多執行緒程式設計中保護共享資料 鎖,操作共享資料,開鎖 有兩個執行緒,對乙個變數進行操作,這個執行緒讀,另乙個執行緒往變數中寫值。int atomvalue 5 讀執行緒a int tmpvalue atomvalue atomvalue代表的是多個執行緒之間要共享的變數寫執行緒b atom...