【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;
}
相关文章
相关标签/搜索