【20190304】JavaScript-知識點總結:Set,異或

ES6新特性:Set

ES6提供了新的數據結構SetSet對象不是數組, 能夠用來保存對象或者基本類型, 全部保存的值都是惟一的, chrome瀏覽器>38和FF>13,以及nodeJS,對Set支持良好。html

建立方法:

1 let set1 = new Set(); //或者 new Set(null);
2 let set2 = new Set([1,2,3,4,4,4,4,4]);
3 
4 console.log( Array.from(set) ); //輸出:[ 1, 2, 3, 4 ]

能夠看到,以上重複的4,在set裏面只保存了一個, 因此Set對象能夠用來給數組去重;node

Set也能用來保存NaN和undefined, 若是有重複的NaN, Set會認爲就一個NaN(實際上NaN!=NaN);chrome

Set屬性:

Set.prototype數組

Set.prototype.size瀏覽器

Set方法:

Set.prototype.add()數據結構

Set.prototype.clear()spa

Set.prototype.delete()prototype

Set.prototype.entries()code

Set.prototype.forEach()htm

Set.prototype.has()

Set.prototype.values()                                                                                                                                                                                               

Set.prototype[@@iterator]()

Set的實際用處:   

利用set能夠方便的進行交集和並集

 

弱引用的WebSet

WeakSet對象是一些對象值的集合, 而且其中的每一個對象值都只能出現一次,WeakSet只能存對象類型的元素,好比:Object, Array, Function 等等;有了弱引用的WeakSet, 就不用擔憂內存泄漏了,若是別的對象不引用該對象, 這個對象會被垃圾回收機制自動回收。

WeakSet對象的方法只有三個,並且WeakSet對象沒有size屬性;

weakSet.add();

weakSet.delete();

weakSet.has();

 

參考:http://www.javashuo.com/article/p-kuystqyn-ec.html

 

異或^/XOR:

異或運算是一種邏輯運算,它表示兩個值相同時,返回結果爲0,兩個值不一樣時,返回結果爲1。

異或的應用:

1. 不使用臨時變量,交換兩個變量的值:

1 function swap(a,b){
2     a=a^b;
3     b=b^a;
4     a=a^b;
5 }

2. 數組中只有一個數字只出現一次,其餘值均出現兩次,找出數組中惟一不出現兩次的數字:

function FindNumsAppearOnce(nums){
    let n;
    for(let i=0;i<nums.length;i++){
        n^=nums[i];
    }
    return n;
}
相關文章
相關標籤/搜索